Форум: "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