![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Права админа [D7, WinXP]
Керик © (2004-07-24 17:57:00)Как определить наличие прав администратора в текущей учётной записи?
Бином Ньютоныч (2004-07-24 21:07:00) [21]Не, я IsAdminUser прям счас писал, под действием паров пива, так что творчески на нее взгляните:)
>Anatoly Podgoretsky © (24.07.04 20:54) [10]
Не понял. По-моему - наоборот. Я вообще-то не админ... А как еще, без включения в группу Administrators дать юзеру права админа? Нет, меня правда это очень интересует!
Anatoly Podgoretsky (2004-07-24 20:54:00) [22]Вот видишь, сам и подтверждаешь, что это не догма.
Бином Ньютоныч (2004-07-24 20:53:00) [23]>Anatoly Podgoretsky © (24.07.04 20:47) [7]
:(
MSDN:
Administrators: "A built-in group. After the initial installation of the operating system, the only member of the group is the Administrator account. When a computer joins a domain, the Domain Admins group is added to the Administrators group. When a server becomes a domain controller, the Enterprise Admins group also is added to the Administrators group.
The Administrators group has built-in capabilties that give its members full control over the system. The group is the default owner of any object that is created by a member of the group.
"
Бином Ньютоныч (2004-07-24 20:49:00) [24]>Anatoly Podgoretsky © (24.07.04 20:45) [6]
Чрезвычайно интересно! Подробней можно? Я с таким не встречался. Откуда инфа? Если из опыта, то как восроизвести?
Anatoly Podgoretsky (2004-07-24 20:47:00) [25]И даже если быть точнее, то чаще не входят, это глобальная группа и не желания включать в нее кого ни попала. Для этого существуют более подходящии группы, Domain Admins, Local Admins
Но и это не обязательно.
Anatoly Podgoretsky (2004-07-24 20:45:00) [26]Бином Ньютоныч (24.07.04 19:02) [1]
Не совсем так, могут и не входить.
Бином Ньютоныч (2004-07-24 20:44:00) [27]function AllocateTokenInformation(Token: THandle;
TokenClass: TTokenInformationClass): Pointer; stdcall;
var
Size, Res: Cardinal;
begin
Result:=nil; Size:=0;
repeat
Result:=CoTaskMemRealloc(Result, Size);
if GetTokenInformation(Token, TokenClass, Result, Size, Size) then
Res:=ERROR_SUCCESS else Res:=GetLastError;
until Res <> ERROR_INSUFFICIENT_BUFFER;
if (Res <> ERROR_SUCCESS) and (Result <> nil) then
begin
CoTaskMemFree(Result);
Result:=nil;
end;
SetLastError(Res);
end;
function IsAdminUser: boolean;
const
sAdmGroup = 'S-1-5-32-544'#0;
var
n: integer;
CurToken: THandle;
Groups: PTokenGroups;
AdmGroupSid: PSID;
begin
{$R-}
Result:=OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS, CurToken);
if not Result then RaiseLastOsError;
Groups:=AllocateTokenInformation(CurToken, TokenGroups);
if Groups = nil then RaiseLastOsError;
try
Result:=ConvertStringSidToSidA(@sAdmGroup[1], AdmGroupSid);
if Result then
try
Result:=not Result;
for n:=0 to Pred(Groups.GroupCount) do
begin
Result:=EqualSid(AdmGroupSid, Groups.Groups[n].Sid);
if Result then Break;
end;
finally
LocalFree(Cardinal(AdmGroupSid));
end;
finally
CoTaskMemFree(Groups);
end;
{$R+}
end;
VMcL (2004-07-24 20:10:00) [28]>> N170 (24.07.04 19:16) [2]
Где взял?
http://search.microsoft.com/search/results.aspx?qu=IsAdminUser&View=msdn&st=b&c=4&s=1&swc=4
Керик (2004-07-24 19:22:00) [29]Для N170: Я не нашёл IsAdminUser(). В каком модуле?
N170 (2004-07-24 19:16:00) [30]IsAdminUser() в Windows XP и выше..
Бином Ньютоныч (2004-07-24 19:02:00) [31]Только между нами: все администраторы входят во встроенную группу Administrators. Но это страшная тайна!