oracle 根据sid psid,如何获得所有windows用户的SID | 学步园

如何获得所有windows用户的SID Delphi / Windows SDK/API

http://www.delphi2007.net/DelphiAPI/html/delphi_20061110113225259.html

有什么方法可以获得所有windows用户的SID

访问注册表

最好是指针形式的sid

{$EXTERNALSYM   ConvertSidToStringSid}

function   ConvertSidToStringSid(Sid:   PSID;   StringSid:   LPTSTR):   BOOL;   stdcall;

{$EXTERNALSYM   ConvertSidToStringSidA}

function   ConvertSidToStringSidA(Sid:   PSID;   StringSid:   LPTSTR):   BOOL;   stdcall;

{$EXTERNALSYM   ConvertSidToStringSidW}

function   ConvertSidToStringSidW(Sid:   PSID;   StringSid:   LPTSTR):   BOOL;   stdcall;

function   ConvertSidToStringSid;   external   advapi32   name   'ConvertSidToStringSidA';

function   ConvertSidToStringSidA;   external   advapi32   name   'ConvertSidToStringSidA';

function   ConvertSidToStringSidW;   external   advapi32   name   'ConvertSidToStringSidW';

procedure   TForm1.Button3Click(Sender:   TObject);

var

cbSid:   DWORD;

Sid:   PSID;

peUse:   SID_NAME_USE;

cbReferencedDomainName:   DWORD;

ReferencedDomainName:   PChar;

SidStr:   PChar;

begin

cbSid:=0;

cbReferencedDomainName:=0;

Sid:=nil;   ReferencedDomainName:=nil;

//首次调用取得Size

LookupAccountName(nil,   nil,   Sid,   cbSid,   ReferencedDomainName,   cbReferencedDomainName,   peUse);

if   (cbSid   =   0)   or   (cbReferencedDomainName   =   0)   then

Exit;//无效的用户名

GetMem(Sid,   cbSid);

GetMem(ReferencedDomainName,   cbReferencedDomainName);

try

LookupAccountName(nil,   nil,   Sid,   cbSid,   ReferencedDomainName,   cbReferencedDomainName,   peUse);

if   ConvertSidToStringSid(Sid,   @SidStr)   then

Self.Caption:=ReferencedDomainName   +   '\'   +   SidStr;

finally

FreeMemory(Sid);

FreeMemory(ReferencedDomainName);

end;

end;

用WMI啊!!想要什么就有什么,从软的到硬的。

获取系统用户SID

Select   Name,   SID   From   Win32_SystemAccount

获取自定义用户SID

Select   Name,   SID   From   Win32_UserAccount

或者

Select   *   From   Win32_AccountSID

当然是API最好的

WMI是简单,但是服务停了就不好用了~

另外注册表的HKEY_USERS下面就有的

各位兄弟先绕我两天,等我全都试完了再结帖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值