Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
А чем GetUserName не нравится? 10.04.03 13:42 Число просмотров: 1047
Автор: Killer{R} <Dmitry> Статус: Elderman
|
|
<programming>
|
[Win32] admin 29.03.03 12:00
Автор: Kerk Статус: Незарегистрированный пользователь
|
Как узнать (WinXP) что текущий юзер - Администратор?
|
|
А чем GetUserName не нравится? 10.04.03 13:42
Автор: Killer{R} <Dmitry> Статус: Elderman
|
|
|
[Win32] Из реестра 29.03.03 14:35
Автор: zonny <Sasha> Статус: Member
|
|
| |
[Win32] Из реестра 10.04.03 09:59
Автор: Kerk Статус: Незарегистрированный пользователь
|
Подробнее можно? ;))))))
|
| | |
[Win32] Из реестра 10.04.03 13:31
Автор: zonny <Sasha> Статус: Member Отредактировано 10.04.03 13:33 Количество правок: 1
|
> Подробнее можно? ;)))))) Если адрес в реестре, то вот для 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 (не пустой), то можно проверить свои силы на удалённой машине ;-)
|
|
|