Windows 域帐户 SID 和 SID

Windows Domain Account SID and SIDs

我在一些 JNI 库上进行编码,我真的不知道它们是如何做的细节,但 lib 的输出是 windows 域用户信息,其中包含 sid 和sids...它们看起来如下所示

sids: [
  "S-1-5-21-2923429462-2395316905-2569861443-1123",
  "S-1-5-32-545",
  "S-1-5-2",
  "S-1-5-5-0-79699478",
  "S-1-5-11",
  "S-1-1-0",
  "S-1-5-15",
  "S-1-18-1",
  "S-1-5-21-2923429462-2395316905-2569861443-513"
],

sid: "S-1-5-21-2923429462-2395316905-2569861443-1123"

问题

我来试一试:

我知道您使用的是 Java 本机界面,但我不确定您使用的是什么其他语言。如果它与 Active Directory 一起使用,Powershell 非常适合它,不过,我不确定它如何与 JNI 一起工作。

无论如何,这是我可以收集的。每个帐户都有一个特定的安全标识符,称为 SID。公共帐户(例如管理员)有众所周知的 SID。甚至本地帐户和组也有 SID,就像 Active Directory 中的一样。

如果您想将 SID 转换为帐户,那不是问题。如果您不使用 Powershell,至少这可以给您一个起点:

$SID = New-Object System.Security.Principal.SecurityIdentifier("SID_GOES_HERE")
$user = $SID.Translate([System.Security.Principal.NTAccount])
$user.Value

您可以将每一行输入到这 3 个步骤中,方法是将其放入函数中,如下所示:

Function SIDtoUser($SIDint) {
    $SID = New-Object System.Security.Principal.SecurityIdentifier($SIDint)
    $user = $SID.Translate([System.Security.Principal.NTAccount])
    return $user.Value
    }

将所有 SID 收集到一个数组中,然后 运行 像这样通过它们:

$SIDArray | %{
    SIDtoUser($_)
    }

希望对您有所帮助。让我知道是否可以提供进一步的帮助。