VB.Net - 本地WMI与用户凭据的连接

时间:2011-11-21 21:27:10

标签: vb.net wmi local

在VB.Net中,我尝试使用不同的凭据连接到本地计算机上的WMI(用户没有管理员权限),我得到了这个例外:

«用户凭据不能用于本地连接»

以下是代码:

    Dim path As ManagementPath = Nothing
    Dim options As ConnectionOptions = Nothing
    Dim scope As ManagementScope = Nothing

    path = New ManagementPath("\\" & vServerName & "\root\CIMV2")

    options = New ConnectionOptions
    options.Username = vUsername
    options.Password = vPassword

    Scope = New ManagementScope(path, options)

    Scope.Connect()

3 个答案:

答案 0 :(得分:4)

当没有管理员权限的用户当前登录时,您无权访问某些wmi实例。(这仅适用于本地WMI连接)

MSDN reference on the topic

太蹩脚了!但是,如果您可以以管理员组成员的身份运行您的应用程序,那么您应该解决问题。

补充说明:

If you write a windows service with **local system** user, then you'll have full access to all wmi classes.


注意:我已经尝试授予我的受限用户访问所需wmi操作的适当权限,但似乎它不会那样工作。在这种情况下,您必须在以下3个位置设置权限:

  1. Start->Run->dcmoncnfg->Component Services->Computers->My Computer->Properties->COM security tab
  2. Start->Run->dcmoncnfg->Component Services->Computers->My Computer->DCOM Config->Windows Management and Instrumention->Properties->Security tab
  3. Start->Run->wmimgmt.msc->WMI Control(Local)->Properties->Root(just highlight)->Security tab

答案 1 :(得分:4)

我知道这个问题已经过时了,但是我尝试了上面的步骤并且没有用。我发现工作的是:

https://web.archive.org/web/20150213044821/http://www.manageengine.com/network-monitoring/help/troubleshoot_opmanager/troubleshoot_wmi.html

  

80041064 - 用户凭据不能用于本地连接

     

原因

     

当您指定用于监视正在运行OpManager的计算机的用户名和密码时,会遇到此错误。

     

解决方案

     

不要为localhost指定用户名和密码。要解决此问题,请从设备快照页面的“密码”链接中删除已配置的用户名和密码。

答案 2 :(得分:0)

通过键入wmic输入wmic提示符,然后输入。然后输入:

/user:""

这将使尝试运行命令的用户为空。不知道,您可能需要对密码进行类似的操作。