![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
LogonUser, а что дальше? [D6, Win95/98, WinME, Win2k, WinXP]
SergeySK © (2003-09-08 23:32:00)
Здравствуйте, уважаемые мастера. Как сделать в своей программе работу от определенной учетной записи (отличной от учетной записи пользователя, запустившего прогу). Добрался до LogonUser, но вот что нужно сделать с полученным токеном? Помогите, пожалуйста.
SergeySK (2003-09-22 21:54:00) [1]
Все, всем огромное спасибо, разобрался, заработало. Только вместо LOGON32_LOGON_NETWORK надо было LOGON32_LOGON_INTERACTIVE поставить.
Nikolay M. (2003-09-18 11:04:00) [2]
> SergeySK (09.09.03 21:30) [4]
А почему бы просто не подключиться к нужному сетевому ресурсу с другим логином/паролем? net use прекрасно это делает.
Игорь Шевченко (2003-09-17 11:11:00) [3]
> Но почему доступа-то нет? :(
Где нет доступа ?
SergeySK (2003-09-16 20:29:00) [4]
Но почему доступа-то нет? :(
clickmaker (2003-09-16 12:22:00) [5]
или Win32Check(CopyFile(
Игорь Шевченко (2003-09-16 12:06:00) [6]
Осталось выводить результат функции GetLastError после неудачного завершения вызовов
SergeySK (2003-09-16 00:21:00) [7]
Извинияюсь за задержку... Вот код:
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-10 12:35:00) [8]
А код где ?
SergeySK (2003-09-09 21:30:00) [9]
Нужна мне эта штука, чтобы моя программа, под кем бы она запущена ни была, всегда имела доступ к определенному сетевому ресурсу (зашареному на определенный логин). И надо мне это не в отдельно запускаемом процессе от нужного логина, а чтоб внутри нее самой это было реализовано. ImpersonateLoggedOnUser(hToken) использовал, но последствий не ощутил - как не было доступа к сетевому ресурсу, так и не стало. LogonUser вроде нормально проходит, может, параметры внутри него какие особые нужно указать?
AlexRush (2003-09-09 10:56:00) [10]
А потом
ImpersonateLoggedOnUser(hToken)
Руслан (2003-09-09 09:15:00) [11]
Я бы для такой цели использовал runas.exe и не выдумывал бы ничего.
ZZ (2003-09-09 00:14:00) [12]
нужно сделать CloseHandle, т.к. я так понял, что он тебе не нужен ... точнее нужен, но ты не знаешь зачем :-))
Как вариант еще можно сделать
ImpersonateLoggedOnUser
CreateProcessAsUser
и кучу других гадостей