Форум: "Прочее";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];
ВнизКонсольное приложение и UAC Найти похожие ветки
← →
Eraser © (2010-12-25 15:17) [12]> [11] DVM © (25.12.10 12:15)
функция IsAdministrator с такой реализацией будет иногда криво работать, вот правильный вариант:/// <summary>
/// Новая функция определения, является ли пользователь админом,
/// основанная на CheckTokenMembership.
/// </summary>
function IsAdminNew: Boolean;
const
SE_GROUP_ENABLED = $00000004;
SE_GROUP_USE_FOR_DENY_ONLY = $00000010;
var
psidAdministrators: PSID;
bIsMember: LongBool;
begin
if Win32Platform <> VER_PLATFORM_WIN32_NT then
begin
Result := True;
Exit;
end;
Result := False;
psidAdministrators := nil;
try
if AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdministrators) then
begin
if CheckTokenMembership(0, psidAdministrators, bIsMember) then
Result := bIsMember;
end;
finally
if psidAdministrators <> nil then
FreeSid(psidAdministrators);
end;
end;
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c