如何通过 C++ 从 GroupName 中检索组 SID

How to retrieve the group SID from GroupName by C++

我知道管理员Group sid(Well-know-sid)是"S-1-5-32-544",但是我研究了msdn,我没有找到任何方法可以通过groupName检索Group sid。

我使用 ::NetLocalGroupEnum 列出所有组名。此外,我想知道哪个组是管理员组。管理员群组名称默认为"administrator"。如果有人修改管理员组的名称(例如:从 "administrator" 到 "123" ),我怎么知道 "123" 属于管理员组。现在我用String来判断哪个组是Administrator组,但是如果修改了Group Name,这种方式就不行了。我也使用 ::NetLocalGroupGetInfo,但它的输出结构只包括名称和注释,但不包括组 SID。有没有API 或方法是关于输入是groupName,OutPut 是Group sid?谢谢!

我使用 PowerShell 发现了以下信息,希望对您有所帮助:

  1. Adding ActiveDirectory Module to PS
  2. 运行 Get-ADGroup -Identity Administrators Administrators 是你的组名

在您的 "S-1-5-32-544" SID 上调用 LookupAccountSid()。你会得到一个类型为 SidTypeGroup.

的名字

正如您正确指出的那样,SID 值是众所周知的(稳定的),因此您将它们用作输入。帐户名称可以本地化,所以这些是输出。