我列举了Windowsjoin域的机器上的本地组。 我使用WMI来做到这一点,因为它是非常远程和供应证书友好。 在我的情况下,我的代码总是远程运行,并作为一个不可信的主体,这意味着我必须能够提供远程调用目标计算机的凭据(这听起来是随机的,但实际上是后来相关)。
我正在做一个WMI查询的forms:
SELECT PartComponent FROM Win32_GroupUser WHERE GroupComponent="Win32_Group.Domain='{0}',Name='{1}'"
在这种情况下,域是计算机名称,名称是组本身的名称。
我找回的项目清单是正确的,但每个条目都缺less所讨论的主体的SID。 为这些用户获取SID的最有效的方法是什么?
我可以通过对每个主体的另一个查询(或对此进行明显的优化)来做到这一点,我很乐意为这个盒子上的本地用户做这些事情。 但是,对于域用户,这意味着与该主体所在域中的DC的另一个连接,并且可能其中许多连接可能是来自此本地组中许多受信任域的用户。
我看了一些明显的其他API,但没有发现一个对我的事业超级友好的东西。 有些人喜欢使用具有WinNT:// ComputerName / GroupName,Group事件path的DirectoryEntry()事件,从结果中发出返回的域主体,这是我发现的。 其他人不提供凭据友好,即使他们返回我后组的成员数据。
真相被告知,我对SID很满意。 主要的名称和域名,虽然我觉得他们非常方便,我很高兴。
有没有这个我失踪的银弹?