我在Windows域加入的计算机上枚举本地组。我正在使用WMI这样做,因为它非常偏远&供应凭证友好。在我的场景中,我的代码总是远程运行,并且作为不受信任的主体,这意味着我必须能够在远程调用中向目标计算机提供凭证(这听起来是随机的,但实际上后来相关)。
我正在对表单进行WMI查询:
SELECT PartComponent FROM Win32_GroupUser WHERE GroupComponent="Win32_Group.Domain='{0}',Name='{1}'"
在这种情况下,域名是计算机名称,名称是组本身的名称。
我收到的项目列表是正确的,但每个条目都缺少相关校长的SID。为这些用户获取SID的最有效方法是什么?
我可以通过针对每个主体的另一个查询(或对此明显的优化)来做到这一点,我很乐意为这个盒子上的本地用户做。但是,对于域用户,这意味着与该主体所在的域中的DC的另一个连接,并且可能有许多连接,因为可能存在来自此本地组中许多受信任域的用户。
我看了一些显而易见的其他API,但没有发现一个对我的事业非常友好的API。有些,比如使用带有WinNT:// ComputerName / GroupName形式的路径的DirectoryEntry(),Group事件甚至从结果中发出返回的域主体,我发现它是疯狂的。其他人虽然返回了我之后的团体会员资料,但并不是供应凭证。
说实话,我对SID非常满意。主要名称和域名,虽然我发现它们非常方便,但对我来说很好。
我是否缺少这样的银弹?