题:
我使用http://support.microsoft.com/kb/306273上的代码
添加Windows用户.问题是我需要将用户添加到组,但组名已本地化.
例如,MS-example使用英文计算机,这意味着您可以像这样获取访客组:grp = AD.Children.Find("Guests","group")
但是在非英语计算机上,"访客"组名是本地化的,例如在我的德语操作系统上,来宾的组名是"Gäste".
这意味着支持示例在我的计算机上运行我需要将该行更改为grp = AD.Children.Find("Gäste","group")
然后它工作.
现在,如果操作系统是任何其他语言,我如何找到访客用户的名称?或者如何从sid获取来宾用户名?
注意:.NET 2.0,而不是3.0或3.5
我从注册表中读取了一个SID列表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
一个人怎么就解决了显示的用户名(例如DOMAIN\user,BUILT-IN\user)给予在C#中的SID字符串?
在Windows操作系统中,用户SID用字符串表示,例如:
S-5-1-76-1812374880-3438888550-261701130-6117
有什么方法可以确定这样的字符串是有效的用户SID吗?
谢谢.
这个问题的灵感来自使用C#标签的类似问题.如果我有一个Windows SID,并希望将其转换为可读的帐户名,我如何使用PowerShell而不是C#来实现这一点?
现在,我有以下代码,它检索当前登录用户帐户的组成员身份:
$Identity = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$Identity.Groups;
Run Code Online (Sandbox Code Playgroud)
该Groups属性的结果不会给我任何帐户名称,只有SID.如果我将Groups属性的输出传递给PowerShell的Get-Membercmdlet,我可以看到生成的对象是System.Security.Principal.SecurityIdentifier对象.但是,查看属性的文档(和Intellisense)会Groups显示它正在返回一个IdentityReferenceCollection对象.
如何将这些SecurityIdentifier对象转换为专有名称?
我们有一个应用程序从命令行安装SQL Server Express,并通过参数SQLACCOUNT ="NT AUTHORITY\SYSTEM"将服务帐户指定为LocalSystem帐户.
这不适用于不同的语言,因为LocalSystem的帐户名称不同.这里有一个列出差异的表格:
http://forums.microsoft.com/MSR/ShowPost.aspx?PostID=685354&SiteID=37
这似乎并不完整(未列出瑞典语版本).所以我希望能够以编程方式确定名称,也许使用SID?
我找到了一些VB脚本来做到这一点:
Set objWMI = GetObject("winmgmts:root\cimv2")
Set objSid = objWMI.Get("Win32_SID.SID='S-1-5-18'")
MsgBox objSid.ReferencedDomainName & "\" & objSid.AccountName
Run Code Online (Sandbox Code Playgroud)
有谁知道可以在C#中使用的等效代码?
有没有办法使用仅具有SID的UserPrincipal搜索Active Directory?我在byte []中有SID(以前用DirectorySearcher查询)并使用StringBuilder将其转换为"S-1-15 -..."和"\ 01\05 ..".
我试着这样处理它:
PrincipalContext pContext = new PrincipalContext(ContextType.Domain);
UserPrincipal pUser = new UserPrincipal(pContext);
pUser.Sid = stringBuilder.ToString();
PrincipalSearcher pSearcher = new PrincipalSearcher();
pSearcher.QueryFilter = pUser;
Console.WriteLine(pSearcher.FindOne().DistinguishedName.ToString());
Run Code Online (Sandbox Code Playgroud)
Visual Studio告诉我,Sid是写保护的.当然...
在此先感谢和干杯亚历克斯
ps:我已经尝试按照这里描述的方式解决它:如何在S#中将SID转换为帐户名,但这里没有成功.
c# ×5
.net ×2
windows ×2
localsystem ×1
powershell ×1
security ×1
sid ×1
sql-server ×1
vb.net ×1