Форум: "WinAPI";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c