gpt4 book ai didi

c# - 使用 C# 确定 LocalSystem 帐户名

转载 作者:行者123 更新时间:2023-11-30 19:04:23 25 4
gpt4 key购买 nike

我们有一个从命令行安装 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

有人知道可以在 C# 中使用的等效代码吗?

最佳答案

您可以使用 .NET 的内置 System.Security.Principal.SecurityIdentifier为此类:通过将其转换为 NtAccount 的实例可以获取账户名:

using System.Security.Principal;


SecurityIdentifier sid = new SecurityIdentifier("S-1-5-18");
NTAccount acct = (NTAccount)sid.Translate(typeof(NTAccount));
Console.WriteLine(acct.Value);

稍后编辑,以回应评论中的问题:您不需要任何特殊权限即可在本地计算机上执行 SID 到名称查找——例如,即使您正在运行的用户帐户仅在Guests 组,此代码应该工作。如果 SID 解析为域帐户,情况会有所不同,但在大多数情况下,只要您登录到该域(并且域 Controller 在查找时可用),在大多数情况下也应该可以正常工作.

关于c# - 使用 C# 确定 LocalSystem 帐户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com