Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Помогите!!!!   Найти похожие ветки 

 
Darlok ©   (2002-04-16 15:11) [0]

Как можно узнать, имеет ли пользователь, запустивший мою программу, права администратора.

Пишу следующее:
unit Priv;

interface
uses Types, Windows;
Type
PUSER_INFO_11 = ^USER_INFO_11;
_USER_INFO_11 = Record
usri11_name: PWideChar;
usri11_comment: PWideChar;
usri11_usr_comment: PWideChar;
usri11_full_name: PWideChar;
usri11_priv: DWORD;
usri11_auth_flags: DWORD;
usri11_password_age: DWORD;
usri11_home_dir: PWideChar;
usri11_parms: PWideChar;
usri11_last_logon: DWORD;
usri11_last_logoff: DWORD;
usri11_bad_pw_count: DWORD;
usri11_num_logons: DWORD;
usri11_logon_server: PWideChar;
usri11_country_code: DWORD;
usri11_workstations: PWideChar;
usri11_max_storage: DWORD;
usri11_units_per_week: DWORD;
usri11_logon_hours: Pointer;
usri11_code_page: DWORD;
End;
USER_INFO_11=_USER_INFO_11;

Function NetUserGetInfo (
servername: PWideChar;
username: PWideChar;
level: DWORD;
bufptr: Pointer
): DWord; stdcall; external "netapi32.dll";

Function NetApiBufferFree(
Buffer: Pointer
): DWORD; stdcall; external "netapi32.dll";


function isAdmin:Boolean;


implementation

function isAdmin:Boolean;
Var
login: PChar;
info: PUSER_INFO_11;
Size: Cardinal;
Begin
Result:=false;
// Выделяем память для переменных
GetMem (login,SizeOf (Char) * 256); GetMem(info,sizeOf(USER_INFO_11));

// Получаем логин пользователя, запустившего программу
GetUserName(login,Size);
// Получаем информацию о пользователе
if NetUserGetInfo (Nil, PWideChar(login), 11, @info)<>0 then exit;
// Определяем наличие административных привилегий
if Info^.usri11_priv=2 then Result:=true;

NetApiBufferFree( info );
FreeMem (login);
End;


end.


Оно кмпилится нормально, но NetUserGetInfo всегда выдает значение, отличное от 0. Чего делать, уже не занаю.


 
SerVS ©   (2002-04-16 15:39) [1]

Посмотреть этот пример на www.delphi.xonix.ru


 
Darlok ©   (2002-04-16 17:45) [2]

SerVS © (16.04.02 15:39)

Спасибо. Я там нашел подходящие примеры. :)


 
Bachin ©   (2002-04-16 20:30) [3]

сразу: PWideChar(login) !?


 
SerVS ©   (2002-04-16 21:59) [4]

>Darlok ©
А вот что я нашел в MSDN:
If the function succeeds, the return value is NERR_Success.
If the function fails, the return value can be one of the following error codes.
Она и недолжна возвращять ноль!
ЗЫ. Рад был помочь ;)


 
Raptor ©   (2002-04-16 22:48) [5]

2 SerVS
К твоему сведенью NERR_Success = 0 ;-))


 
Tosov ©   (2002-04-17 00:39) [6]

Попробуй GetUserNameW вместо GetUserName.


 
SerVS ©   (2002-04-17 00:58) [7]

>Raptor ©
Я не знал. Вообщето я предпочитаю писать так как советуют в MSDN, тогда вопросов меньше возникает.
ЗЫ. Если я правильно понял сообщение от Darlok © (16.04.02 17:45) то он уже все сделал, и нечего больше обсуждать



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-55095
PTE
2002-06-05 17:33
2002.06.17
Что я с формой сделал то?


6-55257
anaxemon
2002-04-08 08:08
2002.06.17
Почему тормозит сокет?


1-55172
Yuri Btr
2002-06-04 12:48
2002.06.17
Поменять главную форму...


6-55255
skovorodka
2002-03-29 14:30
2002.06.17
Как определить ОСь удаленного компа по хосту или ИП


3-54990
MikNik
2002-05-22 20:39
2002.06.17
Есть ли для Delphi компонент для обработки Alert-ов Oracle