Active Directory:从SID获取RID

时间:2018-04-06 00:06:40

标签: c# regex active-directory

我正在尝试从安全标识符(SID)中检索相对标识符(RID),据我所知,这是SID上的最后一个数字序列。我收到了一个使用正则表达式来检索值的代码示例,但我是RegEx的新手(请参阅下面的链接)。所以,在我没有完全理解之前使用它之前,我的问题是:是否有理由使用RegEx而不是在字符串中的最后一个' - '之前获得最正确的值?

        // Retrieve the RID from the SID.
        string strObjectSid = "S-1-5-21-397955417-62688126-188441444-1010";
        var reg = new Regex( @"^S.*-(\d+)$" );
        var match = reg.Match(strObjectSid);
        var rid = match.Groups[1].Value;

摆脱的预期结果是1010。

Active Directory: DirectoryEntry member list <> GroupPrincipal.GetMembers()

此外,我尝试从AD检索RID属性但它不可用。 Microsoft不提供任何检索RID的方法。我知道这可能看起来像一个愚蠢的问题,但这个值对我想要完成的事情很重要,所以它需要是正确的以及我实现的任何方法来检索它。

1 个答案:

答案 0 :(得分:1)

如果没有RegEx,没有理由不能这样做。我也是从其他地方复制过的。

该正则表达式只是告诉它在字符串结尾之前发生破折号之后寻找一组数字。

所以,基本上,最后一组数字。

'+index+]'可以做同样的事情(搜索最后一个破折号,添加1并返回从该位置到结尾的所有内容):

Substring