Мультиюзерный запуск AutoCAD в терминальном режиме под ограниченными правами.

Для запуска под пользователем нужно поменять два параметра в политике безопасности:
Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя (Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment section)
Нужно добавить права пользователям Authenticated Users и System на Олицетворение клиента после проверки подлинности (Impersonate a client after authentication) и Создание глобальных объектов (Create Global Objects).
При первом запуске под пользователем Acad должен создать записи в реестре пользователя и установить необходимые файлы. Это происходит на обычных рабочих станциях, но почему-то на Терминальном сервере это не работает, поэтому приходится делать «вручную» (при помощи скрипта). Для этого я сохранил реестр пользователя из под которого ставился Acad и заменил в нем имя пользователя на %USERNAME%. Так же необходимо сохранить каталоги «\Local Settings\Application Data\Autodesk\» и «\Application Data\Autodesk\».
Вот текст скрипта (его нужно записать в каталог с сохраненными Local Settings и Application Data), нужно так же дать права пользователям на чтение этих каталогов:

vbQuote=chr(&h22)
Function GetFile(sFile)
On Error Resume Next
Set GetFile=FSO.GetFile(sFile)
If Err.Number<>0 then
Wscript.Echo «Error connecting to: » & sFile & VBIf & «E» & Err.Number & «] » & Err.Description
Wscript.Quit.Err.Number
End If
End Function

Function GetFolder (sFolder)
On Error Resume Next
Set GetFolder = FSO.GetFolder (sFolder)
If Err.Number<>0 Then
Wscript.Echo «Error connecting to folder: » & sFolder & VBIf & «[ » & Err.Number & «] » & Err.Description
Wscript.Quit Err.Number
End If
End Function

Sub ListFiles (objDir)
For Each eFile in objDir.Files
Wscript.Echo eFile
Next
End Sub

Sub DelFile (sFile)
On Error Resume Next
FSO.DeleteFile sFile, True
If Err.Number <> 0 then
Wscript.Echo «Error deleting file: » & sFile
End If
End Sub

Function GetEnvVar(sEnvVar)
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set WshSysEnv = WshShell.Environment(«PROCESS»)
GetEnvVar = WshSysEnv(sEnvVar)
End Function

Sub RunCommand (sCmd)
Dim oShell
Set oShell = WScript.CreateObject («WSCript.shell»)
oShell.run sCmd,0,true
Set oShell = Nothing
End Sub

set FSO=CreateObject(«Scripting.FileSystemObject»)

‘Файлы для импорта ветки реестра
PathToScript=»C:\Program Files\AutoCAD 2006\ACAD_TS\»
File1 = PathToScript+»acad_ts.reg»
File2 = GetEnvVar(«USERPROFILE»)+»\acad_ts.reg»

if FSO.FileExists(File2) then
Wscript.Quit
End If

Set txtFile1 = FSO.OpenTextFile(File1, 1)
Set txtFile2 = FSO.OpenTextFile(File2, 2, True)

‘Замена имени профиля перед импортом
Do While txtFile1.AtEndOfStream <> True
txtFile2.WriteLine Replace(Replace(txtFile1.ReadLine, «%APPDATA%», Replace(GetEnvVar(«APPDATA»),»\»,»\\»)),«%USERNAME%»,GetEnvVar(«USERNAME»))
Loop
txtFile1.close
txtFile2.close

‘Импорт ветки реестра
RunCommand «reg.exe import «+vbQuote+File2+vbQuote
‘Копирование данных в «Application data»
RunCommand «xcopy «+vbQuote+PathToScript+»Application data\*.*»+vbQuote+» «+vbQuote+GetEnvVar(«APPDATA»)+»\»+vbQuote+» /E /D /Y /C»
‘Копирование данных в «Local settings»
RunCommand «xcopy «+vbQuote+PathToScript+»Local settings\*.*»+vbQuote+» «+vbQuote+GetEnvVar(«USERPROFILE»)+»\Local settings\»+vbQuote+» /E /D /Y /C»

—————
Если у другово пользователя загрузится лысый автокад без меню
то сделайте сдедующее

Экспортируйте ветку HKEY_ CURRENT_ USER\ Software\ Autodesk
и справьте там путь где встречается имя пользователя  на %USERPROFILE%

Например C:\Documents and Settings\root\acad
исправте на %USERPROFILE%\acad

Print Friendly, PDF & Email
 

Добавить комментарий

Ваш адрес email не будет опубликован.