Главная страница
    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.006 c
1-55164
PTE
2002-06-04 12:47
2002.06.17
Как отчистить содержимое StringGrid?


3-55024
dyacha
2002-05-22 12:19
2002.06.17
Доступ к базам БЕСТ


1-55109
alex-ran
2002-06-06 11:20
2002.06.17
Отключение обработчика событий


4-55343
Nomad
2002-04-10 11:16
2002.06.17
как недопустить закрытия плавающего окошка?


1-55065
kmc
2002-06-05 18:31
2002.06.17
Как получить версию программы (version info) для этой же программ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский