如何以与语言环境无关的方式查找本地组?

时间:2012-08-06 08:48:47

标签: c# .net windows localization internationalization

在我的C#代码中,我想将用户添加到“Administrators”组。我听说在德语版的Windows上,该组称为“Administratoren”,也许在其他本地版本上,它会有其他名称。

我的代码在进行搜索时传递了一个硬编码字符串:

var context = new PrincipalContext( ContextType.Machine );
var group = GroupPrincipal.FindByIdentity( context, "Administrators" );

所以如果该组实际上有其他名称,它将会中断。我发现this MSDN article with well-known SIDs坚果我不知道如何实际使用它们来解决我的问题。

如何找到独立于Windows操作系统语言的本地组?

1 个答案:

答案 0 :(得分:4)

我不知道这是否有帮助。

using System.Security;
using System.Security.Principal;

......
SecurityIdentifier sid = new SecurityIdentifier("S-1-5-32-544");
string name = sid.Translate(typeof(NTAccount)).Value;
Console.WriteLine(name);

结果是

"BUILTIN\Administrators"

我从this page获取了SID,您可以在其中找到其他值来进行实验。