Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-55092
Andrew22
2002-05-29 15:23
2002.06.17
Реестр


3-54969
Gamar
2002-05-14 14:56
2002.06.17
Запуск приложения баз данных Парадокс без Дельфи


14-55305
Baz
2002-05-14 10:17
2002.06.17
Да так просто


1-55128
Lefan
2002-06-04 08:49
2002.06.17
Хочу запуск с параметрами...


7-55333
DenKop
2002-03-15 16:28
2002.06.17
LPT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский