远程WMI连接我想使用本地网络上的ManagementScope从另一台PC连接到运行Windows7的远程PC。在远程PC上,我创建了一个没有密码的新用户帐户“Samuel”并将其设置为管理员。ConnectionOptions选项=newConnectionOptions();options.Username="Samuel";选项.密码="";ManagementScopescope=newManagementScope("\\192.168.0.2\root\cimv2",options);范围.连接();我得到的错误:访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))更新:设置密码后,出现新错误:RPC服务器不可用。(HRESULT的异常:0x800706BA)也许这是缺少的“EnablePrivileges”:scope.Options.EnablePrivileges=true;来自MSDN(ConnectionOptions.EnablePrivileges属性):获取或设置一个值,指示是否需要为用户启用连接操作权限。只有在执行需要启用用户权限的操作(例如,计算机重新启动)时才应使用此属性。编辑:如果它不起作用,请尝试将ImpersonationLevel设置为“模拟”:scope.Options.Impersonation=System.Management.ImpersonationLevel.Impersonate;ImpersonationLevelImpersonate:模拟级别的COM模拟级别,允许对象使用调用者的凭据。这是WMI调用的推荐模拟级别。(虽然提到了WindowsXP,但它也可以在Windows7上运行。)其中0x800706BA错误表示防火墙问题:0x800706xx(DCOMRPC错误)这通常发生在在远程计算机上配置防火墙时。您需要在防火墙上打开适当的端口以允许使用DCOM进行远程管理。尝试在远程计算机上的Windows防火墙中启用远程管理例外,看看是否有帮助。要从命令行执行此操作,请在提升的命令提示符下运行以下命令:netshadvfirewallfirewallsetrulegroup="remoteadmin"newenable=yesYoucanalsoremotebootWindowsVistabyconnectingtoWMIonMSDN"articletofindDCOM、UAC、Windows防火墙和远程WMI访问所需的其他设置。此外,由于Samuel是非域帐户,因此您需要授予此帐户DCOM远程访问、远程启动和远程计算机上的远程激活权限,如此处所述。您得到“拒绝访问”。因为您不能仅使用用户名查询作用域连接。您有2个选项:用户名和密码为空或输入用户名和密码。您得到“RPC服务器不可用”.因为防火墙不允许你查询那台计算机。你有2个选择:禁用防火墙或向它添加远程管理例外。你可以在cmd中像这样添加防火墙例外:较旧的Windows:netshfirewallsetservicetype=remoteadminmode=enable较新的Windows版本:netshadvfirewallfirewallsetrulegroup="WindowsRemoteAdministration"newenable=yes如果您尝试使用域用户登录,请将用户名更改为domainNameusername或设置连接属性connection.Authority="ntlmdomain:域名”。您确定可以在没有密码的情况下与该帐户建立远程WMI连接吗?这样的帐户不能做很多事情(例如共享文件、远程桌面)。尝试设置密码,看看是否有所不同。您可能需要检查远程Windows7PC上的WMI安全设置。右键单击“计算机”>“管理”>“服务和应用程序”>“WMI控制”>“安全”选项卡,确保您使用的用户帐户具有necc权限。不确定是否因为WMI引擎未在远程计算机上侦听而被拒绝,或者您有其他一些登录/连接问题。这是我用来连接到远程机器的代码,它工作得很好。也许它会对您有所帮助:ConnectionOptionsoConn=newConnectionOptions();ManagementScopeoScope=null;oConn.Username=txtLogin;oConn.Password=txt密码;oConn.Authority="ntlmdomain:"+txtDomain;oScope=newManagementScope("\\"+txtHostName+"\root\CIMV2",oConn);oScope.Connect();如果我的域/登录名/密码三元组被接受,则Connect()将起作用。否则,Connect()会抛出异常。只要指定的凭据对该计算机具有权限,您就应该启动并运行。尝试在您的用户名前添加您的域名或计算机名称(例如@"mshomeSamuel")。解决方案是使用“netview\servername”我知道使用控制台命令并在输出上做一些字符串体操是不可取的,但另一方面它确实有效,至少对我来说,必须弄乱DCOM默认设置使WMI方式工作(至少在Win7s上)。已在Win7和XP客户端以及MS和Linux服务器上进行测试。函数GetShares(ServerNameAsString)AsList(OfString)TryDimPAsNewProcessDimReadAsBoolean=FalseDimStrAsStringDimSharesAsNewList(OfString)WithP.StartInfo.FileName="net".Arguments="view"&ServerName.RedirectStandardOutput=True.RedirectStandardError=True.CreateNoWindow=True.UseShellExecute=FalseEndWithP.Start()P.WaitForExit()IfP.ExitCode0ThenMsgBox(P.StandardError.ReadToEnd,MsgBoxStyle.OkOnly,"Error")ElseDoUntilP.StandardOutput.EndOfStream=TrueIfRead=TrueThenStr=P.StandardOutput.ReadLineIfStr="命令成功完成。"ThenExitDoStr=Strings.RTrim(Str)'删除任何尾随空格Str=Strings.Mid(Str,1,Strings.InStrRev(Str,""))'removeTypeStr=Strings.RTrim(Str)''删除任何尾随空格例外onMsgBox("Errorin"""&System.Reflection.MethodInfo.GetCurrentMethod.Name&""":"&vbCr&ex.Message,MsgBoxStyle.OkOnly,"运行时错误")Debug.Print("--------------------------"&vbCr&"Error:"&ex.Message&vbCr&ex.StackTrace)ReturnNothingEndTryEndFunction我也有这个问题我正在尝试编写C#代码以从远程PC获取WMI信息和文件。并收到两个拒绝访问错误:简而言之,我必须对远程PC进行更改。见下文:0x80070005:访问被拒绝:https://social.msdn.microsoft.com/Forums/vstudio/en-US/6229334e-d5ef-4016-9e7e-1c8718be8d43/access-is-denied-exception-from-hresult-0x80070005-vbnet中的eaccessdeniedfunction?forum=netfxbclSystem.Management:访问被拒绝:“使用System.Management和WMI”部分:https://support.microsoft.com/en-us/help/317012/process-and-request-identity-in-asp。以上就是C#学习教程:远程WMI连接分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
