Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

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

 
Manulo ©   (2004-05-31 21:10) [0]

Задача тривиальна. Программа расчитана на работу в вин 2000 под опытным пользователем. Возникает необходимость запустить некоторую команду, выполнить которую может только администратор.
Выход: используем команду runas.
Но! Тут начинается ступор! В параметрах команды указывается только учётная запись админа, а пароль нужно вводить попозже, во время выполнения команды. Естественно вводить его с клавиатуры никто не собирается.
Вопрос: Чё делать?


 
Manulo ©   (2004-05-31 22:09) [1]

2 модератор: Звыняй, ветки попутал :)

Соббсно нарыл такое:
 if LogonUser("admin","domain","passwrd",LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken) then
   ImpersonateLoggedOnUser(hToken);
 WinExec("route delete 0.0.0.0 ",SW_SHOW);

 RevertToSelf;//Возвращаем процессу прежний контекст
 CloseHandle(hToken);//Освобождаем дескриптор контекста


Возник встречный вопрос: Как определить имя домена? Не компилить же каждый раз под каждую машину


 
Cobalt ©   (2004-05-31 22:56) [2]

насколько я знаю, в том случае, когда машина не входит в домен - именем домена является имя компьютера.
Иначе - имя домена, в который она входит.


 
Cobalt ©   (2004-05-31 23:07) [3]

Извиняюсь - эти данные были получены опытным путём, при попытке логина дома и на работе.
А вообще,
lpszDomain

Pointer to a null-terminated string that specifies the domain or server to log on to. If this parameter is ".", LogonUser searches only the local account database for the account specified in lpszUsername. If this parameter is NULL, LogonUser searches the local account database, and then searches trusted domain account databases, until it finds the lpszUsername account or the search is exhausted without finding the account name.

Также есть мысль брать имя домена у текущего пользователя.


 
Piter ©   (2004-06-01 00:20) [4]

Manulo (31.05.04 21:10)
Вопрос: Чё делать?


есть функция CreateProcessAsUser


 
evvcom ©   (2004-06-01 08:33) [5]


> насколько я знаю, в том случае, когда машина не входит в
> домен - именем домена является имя компьютера

А когда входит в домен, то пользователь может войти в любой из этих доменов (локальная машина или сетевой домен). Для каждого из этих доменов определены свои пользователи, в том числе и администраторы.


 
Игорь Шевченко ©   (2004-06-01 10:59) [6]

CreateProcessWithLogonW. Я уже столькораз постил код примера, что больше не буду. Поиск спасет



Страницы: 1 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
14-1087476394
Рамиль
2004-06-17 16:46
2004.07.11
Software Update Services


1-1088062573
Del_programmer
2004-06-24 11:36
2004.07.11
Регистрация проги


1-1088149573
Partos
2004-06-25 11:46
2004.07.11
Ещё одна проблема с StringGrid


14-1087544162
КаПиБаРа
2004-06-18 11:36
2004.07.11
Пишу рецензию на диплом


1-1088180801
Yustas
2004-06-25 20:26
2004.07.11
Изменить значение по памяти по адресу