【问题标题】:Access denied on wmi query to root\MicrosoftIISV2 with Administrator使用管理员对 root\MicrosoftIISV2 的 wmi 查询访问被拒绝
【发布时间】:2018-01-11 07:33:28
【问题描述】:

我正在执行 wmi 查询以检查 IIS 池是否正在运行。 通过powershell,查询工作

Get-WmiObject `
    -Credential (Get-Credential) `
    -ComputerName MyMachine `
    -Namespace root\MicrosoftIISV2 `
    -Query "select * from IISApplicationPoolSetting where Name='W3SVC/APPPOLLS/MyPool'"

通过 C#,我得到一个带有错误代码 AccessDeniedManagementException

var ms = new ManagementScope($@"\\{myMachine}\root\MicrosoftIISV2", new ConnectionOptions
{
    Username = $".\\Administrator",
    SecurePassword = Secure("adminPwd")
});
var query = "SELECT * FROM IISApplicationPoolSetting where name='W3SVC/APPPOLLS/MyPool'";
using (var searcher = new ManagementObjectSearcher(ms, new SelectQuery(query)))
{
    var objects = searcher.Get(); // throws here
}

这两种情况下的用户都是机器管理员帐户。我希望通过设置正确的权限不需要这样做。

我还通过查询 root\cimv2 命名空间和 Win32_Service 类来检查 Windows 服务的状态,并且它在这两种方法中都能完美运行。

在我可以让任何方法工作之前,我必须禁用远程 UAC。

Set-ItemProperty `
    -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System `
    -Name LocalAccountTokenFilterPolicy -Value 1 -Type DWORD

我的问题与权限/特权有关:

  1. 为什么管理员用户会出现 AccessDenied 异常?我该如何调试?
  2. 是否有必要禁用远程 UAC?
  3. 使用管理员帐户或管理员组中的用户是否不可避免?

【问题讨论】:

  • 你需要做:ms.Connect();在将其传递给 ManagementObjectSearcher 之前 - 理想情况下就在您的 var 查询行之前。您已经告诉它要使用什么凭据,但忘记尝试以该用户身份连接。禁用 UAC 不是必须的 - 如果可能,您应该避免这样做。最后,这取决于调用机器的登录用户。如果应用程序以域/管理员(不是本地管理员)身份登录 - 那么“管理员”将能够调用远程 PC 并且不需要传递凭据。
  • 当然,任何其他有权访问两台机器的用户也应该可以工作,但这将是网络 AD 安全权限的事情。 msdn.microsoft.com/en-us/library/…
  • @Scott,1. 调用 ms.Connect() 对异常没有影响。此外,它在 root\cimv2 命名空间上没有它也可以工作。 2.机器管理员确实不需要禁用远程UAC,但是管理员组中的其他本地用户确实需要它 3.我已经注意到这是一个安全权限的事情

标签: c# .net powershell wmi get-wmiobject


【解决方案1】:

我想我得到了它的一部分。

new ConnectionOptions
{
    Username = ".\\localAdministrator",
    SecurePassword = Secure("localAdminPwd"),
    Authentication = AuthenticationLevel.PacketPrivacy
}

使用 PacketPrivacy 选项,不再有例外,我可以使用本地管理员(只是管理员组中的用户)。

我不确定这个选项的作用以及为什么需要它,但它解决了我的主要问题。如果有人理解这一点足以解释我仍然可以将答案标记为已接受。

我将继续探索权限,以确切了解所需的权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多