Доброго вечера всем. Я тут совсем новичек, поиском воспользовался, но похожего ничего не нашел.
Собственно в чем состоит задача. 200 машин в домене, у всех групповыми политиками для обычных пользователей закрыт на запись диск С (не весь, но в большинстве своем), рабочий стол и мои документы тоже под запретом. Задача была скопировать из сетевой шары папочку с мирандой, попутно выпилив у пользователя из автозагрузки ярлыки на старые мессенджеры, так же спилить их с рабочего стола и из меню пуск, после этого на закрытый для записи рабочий стол вылоить новый ярлычек. Все это естественно делается под конкретным пользователем, так как в миранде настроена прозрачная аутентификация, то есть для каждого пользователя миранда копируется в аппдату. Оттуда же и запускается либо через новоиспеченный ярлык, либо скриптом. Вопрос запрета на запись был решен следующим образом (я взял чужую неделю, доработал напильником под конкретную задачу и вуаля. У учетки OFRO есть право записи данных на диск С и рабочий стол, короче она может все. Проблема в том, что в Win XP все работает идеально, в Win7 не работает вовсе. Первый экзешник стартует, но второй не запускается совсем.
Прошу прощения если тема дублируется.
ЗЫ учетка для запуска в перовм скрипте может иметь и права админа домена, все равно работать не будет. В локальных админах она тоже есть. В автоите я тоже несколько нубоват, так что не пинайте сильно
Итак первый экзешник, запускает второй от учетки с правильными правами, и передает туда же имя учетки пользователя запустившего первый, и после выполнения второго, запускающий программу
Второй экзешник, который собственно и является самым главным
Как все это добро заставить работать в семерке, без лишних вопросов пользователю?
Собственно в чем состоит задача. 200 машин в домене, у всех групповыми политиками для обычных пользователей закрыт на запись диск С (не весь, но в большинстве своем), рабочий стол и мои документы тоже под запретом. Задача была скопировать из сетевой шары папочку с мирандой, попутно выпилив у пользователя из автозагрузки ярлыки на старые мессенджеры, так же спилить их с рабочего стола и из меню пуск, после этого на закрытый для записи рабочий стол вылоить новый ярлычек. Все это естественно делается под конкретным пользователем, так как в миранде настроена прозрачная аутентификация, то есть для каждого пользователя миранда копируется в аппдату. Оттуда же и запускается либо через новоиспеченный ярлык, либо скриптом. Вопрос запрета на запись был решен следующим образом (я взял чужую неделю, доработал напильником под конкретную задачу и вуаля. У учетки OFRO есть право записи данных на диск С и рабочий стол, короче она может все. Проблема в том, что в Win XP все работает идеально, в Win7 не работает вовсе. Первый экзешник стартует, но второй не запускается совсем.
Прошу прощения если тема дублируется.
ЗЫ учетка для запуска в перовм скрипте может иметь и права админа домена, все равно работать не будет. В локальных админах она тоже есть. В автоите я тоже несколько нубоват, так что не пинайте сильно
Итак первый экзешник, запускает второй от учетки с правильными правами, и передает туда же имя учетки пользователя запустившего первый, и после выполнения второго, запускающий программу
Код:
Opt("TrayIconHide",1)
$user = @UserName
$AppDataUser = @AppDataDir
;Передаём значение и запускаем добавлятель ярлыка
RunAsWait("OFRO","contoso","1111111111111", 1, @ScriptDir & "\PandionAutostarOff.exe" & " " & $user)
Run($AppDataUser & "\Jabber\miranda32.exe")
Второй экзешник, который собственно и является самым главным
Код:
Opt("TrayIconHide",1)
;Переменные
$CurrentUser = $CmdLine[1]
$DesktopAllUserChatShortcut = @DesktopCommonDir & "\Chat.lnk"
$DesktopAllUser = @DesktopCommonDir
$AppDataUser = @AppDataDir
$ChatNetworkFolder = "\\111.11.11.111\NetTrash\Jabber"
$IconSource = "\\111.11.11.111\NetTrash\Jabber\Chat.lnk"
$AutostartAlluserPandion = @StartupCommonDir & "\Pandion*"
$AutostartUserPandion = @StartupDir & "\Pandion*"
$AutostartAlluserPsi = @StartupCommonDir & "\Psi*"
$AutostartUserPsi = @StartupDir & "\Psi*"
$MenuPuskAlluserPandion = @StartMenuCommonDir & "\Pandion.lnk"
$CurrentUserAutostartPandion=StringReplace($AutostartUserPandion, "OFRO", $CurrentUser)
$CurrentUserAutostartPsi=StringReplace($AutostartUserPsi, "OFRO", $CurrentUser)
$CurrentUserAppData=StringReplace($AppDataUser, "OFRO", $CurrentUser)
$VersionFileUser = FileOpen($CurrentUserAppData & "\Jabber\Version.txt", 0)
$VersionFileSource = FileOpen($ChatNetworkFolder & "\Version.txt", 0)
$VersionStringSource = FileReadLine($VersionFileSource)
$VersionStringUser = FileReadLine($VersionFileUser)
$VersionFileUserExist = FileExists($CurrentUserAppData & "\Jabber\Version.txt")
$MenuPuskAlluserPandionExist =FileExists($MenuPuskAlluserPandion)
;Копирование миранды
If $VersionStringSource > $VersionStringUser Or $VersionFileUserExist = 0 Then
DirCopy($ChatNetworkFolder, $CurrentUserAppData & "\Jabber", 1)
EndIf
;Проверка наличия файла
$a = FileExists($AutostartAlluserPandion)
$b = FileExists($CurrentUserAutostartPandion)
$c = FileExists($AutostartAlluserPsi)
$d = FileExists($CurrentUserAutostartPsi)
$e = FileExists($DesktopAllUserChatShortcut)
;Смена атрибута файла и удаление файла 1
If $a = 1 or $b = 1 Then
FileSetAttrib($AutostartAlluserPandion, "-R")
FileSetAttrib($CurrentUserAutostartPandion, "-R")
;MsgBox(4096, "Achtung!", "File exist! Kill him!")
FileDelete($AutostartAlluserPandion)
FileDelete($CurrentUserAutostartPandion)
;Else
;MsgBox(4096, "message", "File not exist")
EndIf
;Смена атрибута файла и удаление файла 2
If $c = 1 or $d = 1 Then
FileSetAttrib($AutostartAlluserPsi, "-R")
FileSetAttrib($CurrentUserAutostartPsi, "-R")
;MsgBox(4096, "Achtung!", "File exist! Kill him!")
FileDelete($AutostartAlluserPsi)
FileDelete($CurrentUserAutostartPsi)
;Else
;MsgBox(4096, "message", "File not exist")
EndIf
;Проверка наличия ярлычка и его копирование
If $e = 0 Then
FileCreateShortcut($CurrentUserAppData & "\Jabber\miranda32.exe", $DesktopAllUserChatShortcut)
EndIf
$Pand=ProcessExists ("Pandion.exe")
If $Pand Then ProcessClose($Pand)
$Psi=ProcessExists ("Psi.exe")
If $Psi Then ProcessClose($Psi)
;MsgBox(4096, "Achtung!", "Pandion is running. Kill!!!!!")
;Run($CurrentUserAppData & "\Jabber\miranda32.exe")
Exit
Как все это добро заставить работать в семерке, без лишних вопросов пользователю?