> Подробнее можно? ;)))))) Если адрес в реестре, то вот для w2k
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
Там ключ Logon User Name . Он то и содержит имя пользователя.
[WinNT?] Я гонец из Пензы ;-)))))))11.04.03 20:22 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 12.04.03 06:39 Количество правок: 3
> > Подробнее можно? ;)))))) > Если адрес в реестре, то вот для w2k > HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion > \Explorer > Там ключ Logon User Name . Он то и содержит имя > пользователя.
И всё-таки, IMHO, не надо извращений... Я думаю, что автор корневого поста хотел узнать, имеет ли процесс, в котором исполняется некий код, административные привилегии...
В MSDN описано как минимум два метода. В первом открываем Token процесса и долго с ним мучаемся... Метод этот самый правильный и самый трудный в плане кодирования, но единожды закодив...
Второй метод прост, как выстрел из пистолета. Вот пример функции на Delphi:
Uses WINSVC;
----------
Function IsUserAdmin(Const aHostName: String): Bool;
Var SCHndl: THandle;
Begin
SCHndl := OpenSCManager(PChar(aHostName), Nil, SC_MANAGER_ALL_ACCESS);
Result := SCHndl <> 0;
If Result Then
CloseServiceHandle(SCHndl)
Else
If GetLastError <> ERROR_ACCESS_DENIED Then
RaiseLastWin32Error;
End;
---
Суть трюка в том, что NT сама проверит вас на «административность», если вы запросите такой высокий уровень доступа к базе системных служб. Более того, если указать aHostName (не пустой), то можно проверить свои силы на удалённой машине ;-)