使用 ADSI 检索本地组成员所需的权限

问题描述 投票:0回答:3

使用 ADSI,我可以通过以下操作查询给定计算机上本地管理员组的成员(例如在 PowerShell 中):

([ADSI]"WinNT://computer-name/Administrators,Group").Invoke("members")

为此,据我所知,运行 PowerShell 脚本的用户需要目标计算机上的管理员权限 - 也就是说,用户需要直接间接位于

computer-name
的本地管理员组中(例如,通过成为“域管理员”的成员)。

这让我感到惊讶,因为可以登录

computer-name
的非管理员帐户(例如,属于“域用户”的用户,仅此而已)可以打开本地用户和组应用程序,并查看本地管理员的成员团体。手动执行此操作时不需要特定的权限,但 ADSI 似乎需要它。

所以我的问题是:

  • 使用 ADSI 需要管理员权限才能访问此信息,这是否正确,还是我做错了什么?
  • 是否有其他方法以编程方式获取此信息,该方法需要比管理员帐户更少的权限? (如果有 PowerShell 中不可用的解决方案也没关系,我的目标是 C#/.NET Core)

请注意,我想在其他工作站上远程运行它 - 而不仅仅是在本地工作站上。

c# windows .net-core adsi
3个回答
1
投票

ADSI 构建在 WMI 之上。默认情况下,仅允许本地管理员组进行远程 WMI 调用和读取计算机本地目录数据。

您可以通过进入

Computer Management (local) -> Services and Applications -> WMI Control
更改操作系统上的权限。右键单击
WMI Control
并选择
Properties

我只尝试过允许所有读取,您可以在

root
文件夹上设置。我做了一些研究,您也许可以将其限制为仅 LDAP。在
Security
选项卡上向下钻取至
Root -> directory -> LDAP
。您需要调整
LDAP
条目的权限(或者更多?)。关键权限是
Remote Enable

更新

直接从 PowerShell 查询 WMI。

通过 PowerShell 远程 WMI:https://learn.microsoft.com/en-us/windows/win32/wmisdk/connecting-to-wmi-on-a-remote-computer

通过 WMI 列出远程组成员身份的自定义 PowerShell 方法:https://gallery.technet.microsoft.com/scriptcenter/List-local-group-members-c25dbcc4


0
投票

我认为你的 ADSI 方法应该有效,至少在本地执行时是这样。

我使用了从这个答案中抓取的 C# 片段:https://stackoverflow.com/a/8192062/3374994.

为了测试它是否可以从常规用户权限运行,我使用了 运行 /user:regularuser GetLocalUsers.exe.

我相信这表明 ADSI 方法不一定需要提升权限。

但是,您打算远程运行代码吗?

var path = string.Format("WinNT://{0},computer", Environment.MachineName);

        using (var computerEntry = new DirectoryEntry(path))
        {
            var userNames = from DirectoryEntry childEntry in computerEntry.Children
                where childEntry.SchemaClassName == "User"
                select childEntry.Name;

            foreach (var name in userNames)
                Console.WriteLine(name);
        }

0
投票

这方面有更新吗?我已经尝试了一切,尝试远程运行它 ([ADSI]"WinNT://计算机名/管理员,组").Invoke("成员")

虽然我可以调用计算机并运行来解决我眼前的瓶颈,但当我向 AD 的组成员查询时,它会在未来产生其他问题

我已经尝试过所有其他本地内置组。 通过组或直接将用户添加到具有所有权限的 WMI 名称空间,甚至用于测试目的。 DCOM 设置允许用户远程启动和远程激活。

© www.soinside.com 2019 - 2024. All rights reserved.