远程WMI连接

shl*_*jmi 9 c# wmi

我想在本地网络上使用ManagementScope从另一台PC连接到运行Windows 7的远程PC.在远程PC上,我创建了一个没有密码的新用户帐户"Samuel"并设置为管理员.

ConnectionOptions options = new ConnectionOptions();
options.Username = "Samuel";
options.Password = "";

ManagementScope scope = new ManagementScope("\\\\192.168.0.2\\root\\cimv2", options);          
scope.Connect();
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

访问被拒绝.(HRESULT异常:0x80070005(E_ACCESSDENIED))

更新:
设置密码后,我收到新错误:

RPC服务器不可用.(HRESULT异常:0x800706BA)

web*_*rph 9

也许它是缺少的'EnablePrivileges':

scope.Options.EnablePrivileges = true;
Run Code Online (Sandbox Code Playgroud)

从MSDN(ConnectionOptions.EnablePrivileges属性):

获取或设置一个值,该值指示是否需要为连接操作启用用户权限.仅当执行的操作需要启用某个用户权限(例如,计算机重新启动)时,才应使用此属性.

编辑:如果它不起作用,请尝试将ImpersonationLevel设置为'Impersonate':

scope.Options.Impersonation = System.Management.ImpersonationLevel.Impersonate;
Run Code Online (Sandbox Code Playgroud)

ImpersonationLevel冒充:冒充级COM模拟级别,允许对象使用调用方的凭据.这是WMI调用的推荐模拟级别.


Hel*_*len 7

  • 根据TechNet 上的WMI FAQ,0x80070005错误表示DCOM问题:

    0x80070005(DCOM ACCESS_DENIED)
    当无法识别连接用户或远程服务器以某种方式限制连接用户时(例如,用户可能被锁定),会发生此错误.当帐户位于不同的域中时,这种情况最常发生.最近对WMI安全性的更改也可能导致发生此错误:

    • Windows XP和Windows Server 2003中不允许使用以前允许的空白密码.

    • WMI不允许对Windows 98客户端进行异步回调.从Windows 98计算机到Windows XP计算机的类似SWbemServices.ExecNotificationQueryAsync的调用将导致返回到Windows 98计算机的"拒绝访问"错误.

    • DCOM配置访问设置可能已更改.

    • 如果目标计算机正在运行Windows XP,则可能会将注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的Forceguest值设置为强制关闭Guest帐户(值为零).

    (虽然提到了Windows XP,但它也可能适用于Windows 7.)

  • 其中的0x800706BA错误表示防火墙问题:

    0x800706xx(DCOM RPC错误)
    当在远程计算机上配置防火墙时,通常会发生这种情况.您需要在防火墙上打开相应的端口以允许使用DCOM进行远程管理.

    尝试在远程计算机上的Windows防火墙中启用远程管理例外,看看它是否有帮助.要从命令行执行此操作,请在提升的命令提示符中运行以下命令:

    netsh advfirewall firewall set rule group="remote admin" new enable=yes
    
    Run Code Online (Sandbox Code Playgroud)


    您还可以在MSDN上的" 连接到WMI远程启动Windows Vista"文章中找到远程WMI访问所需的DCOM,UAC,Windows防火墙和其他设置.

  • 此外,由于萨穆埃尔是一个非域帐户,则需要此帐户授予DCOM 远程访问,远程启动远程激活所描述的权限在远程计算机上这里.


Aur*_*kas 5

你得到"访问被拒绝".因为您无法仅使用用户名查询范围连接.您有2个选项:用户名和密码为null或输入用户名和密码.

你得到"RPC服务器不可用".因为防火墙不允许您查询该计算机.您有2个选项:禁用防火墙或向其添加远程管理例外.

您可以在cmd:旧版Windows中添加这样的防火墙例外:

netsh firewall set service type = remoteadmin mode = enable

较新的Windows版本:

netsh advfirewall防火墙设置规则组="Windows远程管理"新的启用=是

如果您尝试使用域用户登录,domainName\username请将用户名更改为或设置连接属性connection.Authority = "ntlmdomain:domainName".


Wil*_*ean 1

您确定可以在没有密码的情况下与帐户建立远程 WMI 连接吗?

此类帐户无法执行许多操作(例如共享文件、远程桌面)。尝试设置密码,看看是否有影响。