Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Запуск скрипта от имени определенного пользователя

Ответить
Настройки темы
Запуск скрипта от имени определенного пользователя

Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте.

Мне нужно, чтобы откомпилированный в EXE'шник AutoIt-скрипт запускался от имени определённого пользователя с его паролем. Главное, чтобы кроме самого EXE-шника небыло больше никаких дополнительных файлов (ярлыков) и манипуляций (BAT'ники, ручной ввод данных), всё должен делать он один, т.е. имя и пароль надо зашить в него!

В AutoIt есть замечательная возможность под именем RunAsSet, но это мне не подходит, т.к. помимо Run и RunWait (для которых эта функция собственно и предназначена), в моём скрипте также используются функции для редактирования реестра (RegDelete и т.п.) и идёт работа с файлами в системных директориях (FileDelete и т.д.).

Может есть программа, которая способна "зашить" в EXE'шник имя/пароль?

Спасибо.

Отправлено: 11:28, 27-01-2010

 

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


NewOLDi, В версиях AutoIt начиная с v3.2.12.0 уже нет такой функции как RunAsSet, вместо нее теперь есть две функции - RunAs и RunAsWait. но это не по сути немного. эти команды предназначены для запуска других приложений ИЗ самого скрипта, и к запуску самого скрипта как такового отношения не имеют. для решения твоего вопроса, мне представляется вероятнее всего такой вариант - нужно крутить тот инструмент, который запускает скрипт. например создать групповую политику. из самого скрипта, скорее всего, такое делать нельзя.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 11:45, 27-01-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


NewOLDi, пусть скрипт сам запускает сам себя с нужными правами, например:

- при запуске скрипта проверяем параметры командной строки;
- если параметров нет, значит это первый запуск, делаем RunAs самого себя с к-л параметром и выход;
- если обнаружен нужный параметр, значит это уже рабочий запуск - переходим выполнению основного кода

пример: http://forum.oszone.net/post-889794-831.html
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:47, 27-01-2010 | #3


Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


amel27, не понял... как выполняющийся скрипт может запустить сам себя? дайте простой пример пожалуйста!

Отправлено: 11:06, 28-01-2010 | #4


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


amel27, браво как всегда изящнее решение.
NewOLDi, имеется в виду два разных сценария запуска. один с параметрами ком. строки, другой без. если нет параметра значит скрипт запустился из скрипта-же. вот пример
Код: Выделить весь код
$username = 'user'
$domain = 'domain'
$pass = 'password'
$logon = 0; 1,2,4
If CmdLine[0] Then
   RunAs($username, $domain, $pass, $logon, @ScriptFullPath)
Else
   ; Основное тело скрипта   
EndIf
Только скрипт должен быть откомпилирован перед запуском

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 11:40, 28-01-2010 | #5


Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


kaster, да это я уже понял мне не разобраться, как получить этот $CmdLine[0]

Вот пример моего кода, осталось только разобраться как получить $CmdLine[0]:
PHP код: Выделить весь код

If $CmdLine[0] == 'param' Then
    Run 
'C:\WINDOWS\pchealth\helpctr\binaries\msconfig.exe' )
Else
    
RunAs 'Administrator''''1234567890'1'test.exe param' )
EndIf 

msconfig.exe не запустится без прав админа, это так, к слову и для удобства эксперимента...

PS: Да, amel27, действительно гениально и просто, огромное спасибо!

Как получить $CmdLine[0]?

Отправлено: 11:53, 28-01-2010 | #6


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


NewOLDi, $CmdLine[0] возвращает количество параметров
Код: Выделить весь код
If $CmdLine[0]=0 Then Exit RunAs("User", @ComputerName, "password", 0, @ScriptFullPath &" process", @ScriptDir)

; тело скрипта
MsgBox(0, 'Сообщение', 'Скрипт запущен под пользователем '& @UserName)

Отправлено: 12:05, 28-01-2010 | #7


Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем большое спасибо за помощь, во всём разобрался, всё получилось!!!

Вот рабочий код, на всякий случай:
PHP код: Выделить весь код

If $CmdLine[0Then

    Run 
'C:\WINDOWS\pchealth\helpctr\binaries\msconfig.exe' )
Else
    
RunAs 'Administrator''''1234567890'1, @ScriptName ' param' )
EndIf 

Что касается $CmdLine, то я элементарно не знал, что это служебное слово AutoIt. Я думал, что $ подразумевает под собой определение пользовательской переменной, как в PHP

Отправлено: 12:28, 28-01-2010 | #8


Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Уходя дальше - столкнулся с проблемой...

План действий такой:
1. Запуск скрипта ПОД ТЕКУЩЕЙ УЧЁТКОЙ ПОЛЬЗОВАТЕЛЯ!!!.
2. Запуск скрипта под учёткой Админа.
3. Запуск скрипта ПОД ТЕКУЩЕЙ УЧЁТКОЙ ПОЛЬЗОВАТЕЛЯ!!!.

Вот код, который это должен делать:
Код: Выделить весь код
If $CmdLine[0] Then
    Select
        Case $CmdLine[1] == '1'
            Exit Run ( @ScriptDir & '\' & @ScriptName & ' 2' )
        Case $CmdLine[1] == '2'
            FileWrite ( '\\сетевой путь + имя файла' )
    EndSelect
Else
    Exit RunAs ( 'Administrator', '', 'пароль', 1, @ScriptDir & '\' & @ScriptName & ' 1' )
EndIf
Выполняются 1 и 2 пункты. 3 пункт выполняется неверно, а именно - он выполняется от учётки Админа (т.е. один раз выполнившись от Админа - скрипт и впредь от этого имени фигачит)! Как его выполнить от учётной записи текущего пользователя (без явного указания имени/пароля)?

Последний раз редактировалось NewOLDi, 29-01-2010 в 22:12.


Отправлено: 22:01, 29-01-2010 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата NewOLDi:
Как его выполнить от учётной записи текущего пользователя »
Не завершать первый запуск скрипта, пока не будут выполнены все задачи под пользователем.

Перепланируйте задачу так, чтобы первый запуск скрипта был главным, и единственным запуском под пользователем, а все админские запуски выполнялись из него, например так:
Код: Выделить весь код
; Описание всех админских процедур
If $CmdLine[0] Then
    Select
        Case $CmdLine[1] == '1'
            MsgBox(0, 'Сообщение', 'Процедура 1 запущена под пользователем '& @UserName)
            Exit 0
        Case $CmdLine[1] == '2'
            MsgBox(0, 'Сообщение', 'Процедура 2 запущена под пользователем '& @UserName)
            Exit 0
        Case Else
            Exit -1
    EndSelect
EndIf
; Запуск процедуры 1 по админом
RunAsWait ( 'Administrator', @ComputerName, 'пароль', 1, @ScriptDir & '\' & @ScriptName & ' 1' )
; Выполнение команды под пользователем
FileWrite ( '\\сетевой путь\имя файла1' )
; Запуск процедуры 2 по админом
RunAsWait ( 'Administrator', @ComputerName, 'пароль', 1, @ScriptDir & '\' & @ScriptName & ' 2' )
; Выполнение команды под пользователем
FileWrite ( '\\сетевой путь\имя файла2' )
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:23, 01-02-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Запуск скрипта от имени определенного пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Запуск программ от имени другого пользователя Guest Microsoft Windows 2000/XP 85 21-01-2020 02:06
Доступ - Запуск от имени другого пользователя. alexnj Microsoft Windows 7 0 08-05-2009 20:35
GPO - запуск скрипта с административными правами из под пользователя Spooner Microsoft Windows NT/2000/2003 5 27-04-2009 12:23
Запуск задания от имени другого пользователя madmax24 Microsoft Windows NT/2000/2003 5 08-12-2008 08:45
Разное - Запуск от имени пользователя.. Великий Кукурузо Microsoft Windows Vista 26 29-10-2008 09:03




 
Переход