![]() |
Запуск скрипта от имени определенного пользователя
Здравствуйте.
Мне нужно, чтобы откомпилированный в EXE'шник AutoIt-скрипт запускался от имени определённого пользователя с его паролем. Главное, чтобы кроме самого EXE-шника небыло больше никаких дополнительных файлов (ярлыков) и манипуляций (BAT'ники, ручной ввод данных), всё должен делать он один, т.е. имя и пароль надо зашить в него! В AutoIt есть замечательная возможность под именем RunAsSet, но это мне не подходит, т.к. помимо Run и RunWait (для которых эта функция собственно и предназначена), в моём скрипте также используются функции для редактирования реестра (RegDelete и т.п.) и идёт работа с файлами в системных директориях (FileDelete и т.д.). Может есть программа, которая способна "зашить" в EXE'шник имя/пароль? Спасибо. |
NewOLDi, В версиях AutoIt начиная с v3.2.12.0 уже нет такой функции как RunAsSet, вместо нее теперь есть две функции - RunAs и RunAsWait. но это не по сути немного. эти команды предназначены для запуска других приложений ИЗ самого скрипта, и к запуску самого скрипта как такового отношения не имеют. для решения твоего вопроса, мне представляется вероятнее всего такой вариант - нужно крутить тот инструмент, который запускает скрипт. например создать групповую политику. из самого скрипта, скорее всего, такое делать нельзя.
|
NewOLDi, пусть скрипт сам запускает сам себя с нужными правами, например:
- при запуске скрипта проверяем параметры командной строки; - если параметров нет, значит это первый запуск, делаем RunAs самого себя с к-л параметром и выход; - если обнаружен нужный параметр, значит это уже рабочий запуск - переходим выполнению основного кода пример: http://forum.oszone.net/post-889794-831.html |
amel27, не понял... как выполняющийся скрипт может запустить сам себя? дайте простой пример пожалуйста!
|
amel27, браво :) как всегда изящнее решение.
NewOLDi, имеется в виду два разных сценария запуска. один с параметрами ком. строки, другой без. если нет параметра значит скрипт запустился из скрипта-же. вот пример Код:
$username = 'user' |
kaster, да это я уже понял :) мне не разобраться, как получить этот $CmdLine[0] :)
Вот пример моего кода, осталось только разобраться как получить $CmdLine[0]: PHP код:
PS: Да, amel27, действительно гениально и просто, огромное спасибо! Как получить $CmdLine[0]? |
NewOLDi, $CmdLine[0] возвращает количество параметров
Код:
If $CmdLine[0]=0 Then Exit RunAs("User", @ComputerName, "password", 0, @ScriptFullPath &" process", @ScriptDir) |
Всем большое спасибо за помощь, во всём разобрался, всё получилось!!!
Вот рабочий код, на всякий случай: PHP код:
|
Уходя дальше - столкнулся с проблемой...
План действий такой: 1. Запуск скрипта ПОД ТЕКУЩЕЙ УЧЁТКОЙ ПОЛЬЗОВАТЕЛЯ!!!. 2. Запуск скрипта под учёткой Админа. 3. Запуск скрипта ПОД ТЕКУЩЕЙ УЧЁТКОЙ ПОЛЬЗОВАТЕЛЯ!!!. Вот код, который это должен делать: Код:
If $CmdLine[0] Then |
Цитата:
Перепланируйте задачу так, чтобы первый запуск скрипта был главным, и единственным запуском под пользователем, а все админские запуски выполнялись из него, например так: Код:
; Описание всех админских процедур |
Этот вариант работает, благодарю! :)
|
Время: 18:54. |
Время: 18:54.
© OSzone.net 2001-