Форум: "Основная";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизКакой пользователь работает на компьютере? Найти похожие ветки
← →
КрЫска © (2007-04-20 00:33) [0]Подскажите, пожалуйста, как определить пользователь с какими правами работает на компьютере? Админ или нет?
← →
Elen © (2007-04-20 07:56) [1]Можно попробовать вычеслить по привилегиям обычного процесса :
(Примерчик из Delphi World)unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetPrivilegy(Delimiter:string=";"):string;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetPrivilegy;
const
TokenSize = 800; // (SizeOf(Pointer)=4 *200)
var
hToken: THandle;
pTokenInfo: PTOKENPRIVILEGES;
ReturnLen: Cardinal;
i: Integer;
PrivName: PChar;
DisplayName: PChar;
NameSize: Cardinal;
DisplSize: Cardinal;
LangId: Cardinal;
begin
GetMem(pTokenInfo, TokenSize);
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
hToken) then ShowMessage("OpenProcessToken error");
if not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then
ShowMessage("GetTokenInformation error");
GetMem(PrivName, 255);
GetMem(DisplayName, 255);
for i := 0 to pTokenInfo.PrivilegeCount - 1 do
begin
DisplSize := 255;
NameSize := 255;
LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize);
LookupPrivilegeDisplayName(nil, PrivName, DisplayName, DisplSize, LangId);
result:=result+string(PrivName){ +"("+ string(DisplayName)+")"}+Delimiter;
end;
FreeMem(PrivName);
FreeMem(DisplayName);
FreeMem(pTokenInfo);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Delimiter:=";";
ListBox1.Items.DelimitedText:=GetPrivilegy;
end;
end.
← →
Elen © (2007-04-20 08:06) [2]Вот еще из инета :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//**************************************************************************
function IsAdmin: Boolean;
const
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
(Value: (0, 0, 0, 0, 0, 5));
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS = $00000220;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
x: Integer;
bSuccess: BOOL;
begin
Result := False;
bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
hAccessToken);
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
hAccessToken);
end;
if bSuccess then
begin
GetMem(ptgGroups, 1024);
bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
ptgGroups, 1024, dwInfoBufferSize);
CloseHandle(hAccessToken);
if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdministrators);
{$R-}
for x := 0 to ptgGroups.GroupCount - 1 do
if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
begin
Result := True;
Break;
end;
{$R+}
FreeSid(psidAdministrators);
end;
FreeMem(ptgGroups);
end;
end;
//**************************************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
if IsAdmin then caption:="admin" else caption:="No admin";
end;
end.
← →
T.V © (2007-04-20 11:22) [3]
function IsAdmin: Boolean;
var
hModule: THandle;
IsUserAnAdmin: function: Boolean; stdcall;
begin
Result := True;
hModule := LoadLibrary("shell32.dll");
if hModule <> 0 then
begin
IsUserAnAdmin := GetProcAddress(hModule,"IsUserAnAdmin");
if Assigned(IsUserAnAdmin) then
Result := IsUserAnAdmin;
FreeLibrary(hModule);
end;
end;
← →
КрЫска © (2007-04-21 00:08) [4]Спасибо Вам огромное. Вы мне очень помогли!:-))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c