Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
4-1086168939
panov
2004-06-02 13:35
2004.07.11
HDC, использование в OnPaint


1-1087986043
sergeryM
2004-06-23 14:20
2004.07.11
Глюк в Label


4-1086175357
eRoR_rrr
2004-06-02 15:22
2004.07.11
ProgresBar при копировании


6-1084464909
Zelius
2004-05-13 20:15
2004.07.11
Скорость скачивания в Indy


1-1087905753
AlexG
2004-06-22 16:02
2004.07.11
Action из DLL




   Наверх