c# - 如何以独立于区域设置的方式定位本地组?

标签 c# .net windows localization internationalization

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

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

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

因此,如果该组实际上有其他名称,它就会中断。我找到了 this MSDN article with well-known SIDs nut 我不知道如何实际使用它们来解决我的问题。

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

最佳答案

我不知道这是否有帮助。

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您可以在其中找到其他值进行试验。

关于c# - 如何以独立于区域设置的方式定位本地组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825089/

相关文章:

windows - 我怎样才能告诉 Windows XP/7 在我的代码的特定段期间不要切换线程?

c# - Azure Function 无法从设置加载 CRON 计时器

javascript - 包含 pdf 文件的页面显示 5 分钟后重定向到另一个页面

c# - 命名空间错误 OfficeOpenXML EPPlus

c# - 如何模拟被测试方法调用的实例方法,以便只测试一件事?

c# - WCF 服务的 VS2003 Web 引用有额外的 "IdSpecified"参数

c++ - Windows 上的串行 (COM) 端口重新连接

c# - C# 从视频流中获取图像

c# - 如何使用云服务(Web角色)实现主动/被动模式?

java - 无需java代码构建war文件