Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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
и кучу других гадостей


Наверх

Титульная страница Поиск, карта сайта Написать письмо