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

Вниз

LogonUser, а что дальше?   Найти похожие ветки 

 
SergeySK   (2003-09-08 23:32) [0]

Здравствуйте, уважаемые мастера. Как сделать в своей программе работу от определенной учетной записи (отличной от учетной записи пользователя, запустившего прогу). Добрался до LogonUser, но вот что нужно сделать с полученным токеном? Помогите, пожалуйста.


 
ZZ ©   (2003-09-09 00:14) [1]

нужно сделать CloseHandle, т.к. я так понял, что он тебе не нужен ... точнее нужен, но ты не знаешь зачем :-))

Как вариант еще можно сделать
ImpersonateLoggedOnUser
CreateProcessAsUser
и кучу других гадостей


 
Руслан   (2003-09-09 09:15) [2]

Я бы для такой цели использовал runas.exe и не выдумывал бы ничего.


 
AlexRush ©   (2003-09-09 10:56) [3]

А потом ImpersonateLoggedOnUser(hToken)


 
SergeySK   (2003-09-09 21:30) [4]

Нужна мне эта штука, чтобы моя программа, под кем бы она запущена ни была, всегда имела доступ к определенному сетевому ресурсу (зашареному на определенный логин). И надо мне это не в отдельно запускаемом процессе от нужного логина, а чтоб внутри нее самой это было реализовано. ImpersonateLoggedOnUser(hToken) использовал, но последствий не ощутил - как не было доступа к сетевому ресурсу, так и не стало. LogonUser вроде нормально проходит, может, параметры внутри него какие особые нужно указать?


 
Игорь Шевченко ©   (2003-09-10 12:35) [5]

А код где ?


 
SergeySK   (2003-09-16 00:21) [6]

Извинияюсь за задержку... Вот код:

procedure TForm1.Button1Click(Sender: TObject);
var SI:_STARTUPINFOA;
PI:_PROCESS_INFORMATION;
UserName,Domain,Password,AppName: PChar;
PH: Cardinal;
PT: PHandle;
begin
SI.cb:=sizeof(_STARTUPINFOA);
SI.lpReserved:=nil;
SI.lpDesktop:=nil;
SI.lpTitle:=nil;
SI.cbReserved2:=0;
UserName:="UserLogin";
Domain:="Domain";
Password:="LoginPassword";
if LogonUser(UserName,Domain,Password,LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,PH) then
begin
if ImpersonateLoggedOnUser(PH) then ShowMessage ("ImpersonateLoggedOnUser done")
else ShowMessage("ImpersonateLoggedOnUser Error");
//Далее пытаюсь копировать с зашаренного ресурса:
if CopyFile("\\comp\folder\test_file.txt","C:\test_file.txt",false) then ShowMessage("Copy OK")
else ShowMessage("Copy Error");
end;

Вроде и LogonUser, и ImpersonateLoggedOnUser проходят нормально, но все-равно CopyFile возвращает false;


 
Игорь Шевченко ©   (2003-09-16 12:06) [7]

Осталось выводить результат функции GetLastError после неудачного завершения вызовов


 
clickmaker ©   (2003-09-16 12:22) [8]

или Win32Check(CopyFile(


 
SergeySK   (2003-09-16 20:29) [9]

Но почему доступа-то нет? :(


 
Игорь Шевченко ©   (2003-09-17 11:11) [10]


> Но почему доступа-то нет? :(


Где нет доступа ?


 
Nikolay M. ©   (2003-09-18 11:04) [11]


> SergeySK (09.09.03 21:30) [4]

А почему бы просто не подключиться к нужному сетевому ресурсу с другим логином/паролем? net use прекрасно это делает.


 
SergeySK   (2003-09-22 21:54) [12]

Все, всем огромное спасибо, разобрался, заработало. Только вместо LOGON32_LOGON_NETWORK надо было LOGON32_LOGON_INTERACTIVE поставить.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
1-56673
512 ram
2003-11-05 08:09
2003.11.17
Можно ли с помощью средств Delphi запустить файл


1-56565
maxi
2003-11-06 13:12
2003.11.17
Как заставить TImageList не резать картинки на части ?


4-56958
stone
2003-09-18 15:00
2003.11.17
Нужна помощь по MAPI


3-56519
Шурик Ш
2003-10-27 17:38
2003.11.17
А чем тип numeric отличается от decimal?


1-56609
Alex-21
2003-11-03 21:39
2003.11.17
SelWindowsPos