如何获得所有windows用户的SID 有什么方法可以获得所有windows用户的SID 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 {$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啊!!想要什么就有什么,从软的到硬的。 获取系统用户SIDSelect Name, SID From Win32_SystemAccount获取自定义用户SIDSelect Name, SID From Win32_UserAccount 或者Select * From Win32_AccountSID 当然是API最好的WMI是简单,但是服务停了就不好用了~另外注册表的HKEY_USERS下面就有的 Delphi 2005和2007版本问题 请教有关Delphi QuickReport的问题 青岛海信网络科技面试经历!可笑透顶! Delphi2005有个问题让我太郁闷了!!有用上的进来看看!! dbgridheh在画的时候不断闪烁,如何解决比较好!谢谢! delphi开发b/s结构的问题 救急:如何通过限制鼠标实现锁定系统 讨论怎样用FILESTREAM和SOCKET组合来达到网络传输大多媒体文件速度流畅 新建一个VPN连接,用这个代码为什么总是提示新建失败。(附代码) 又是一个键盘钩子问题 delphi3的dcu,如何才能在delphi6中用呢? 如何显示Memo控件的内容
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;
Select Name, SID From Win32_SystemAccount获取自定义用户SID
Select Name, SID From Win32_UserAccount
Select * From Win32_AccountSID
WMI是简单,但是服务停了就不好用了~另外注册表的HKEY_USERS下面就有的