我创建了一个Windows窗体应用程序,我想用它连接到远程计算机和显示器 数据存储在文本文件中。但是,当它尝试连接到远程计算机时,我收到以下错误:
RPC服务器不可用。 (HRESULT异常:0x800706BA)
我用来连接远程计算机的代码:
var conOpt = new ConnectionOptions();
conOpt.Impersonation = ImpersonationLevel.Impersonate;
conOpt.EnablePrivileges = true;
conOpt.Username = "username";
conOpt.Password = "password";
var scope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", "computername"), conOpt );
scope.Connect();
在网上研究之后,似乎申请可能不是 允许连接,因为服务器上的防火墙设置或与端口相关。或许我在代码中遗漏了一些东西?
这可能与远程计算机上的组策略有关 允许特定的应用程序连接?在配置方面还需要考虑哪些因素?有没有更好的方法呢?
答案 0 :(得分:1)
远程计算机是否在域上?如果是,请考虑在ConnectionOptions
中包含该内容:
conOpt.Authority = string.Format("ntlmdomain:{0}", domainName);
另外,请尝试使用SecureString
SecurePassword
属性而不是常规字符串。不要认为这很重要,但值得一试。这是您创建SecureString
:
SecureString secureString = new SecureString();
foreach (char character in password)
{
secureString.AppendChar(character);
}
conOpt.SecurePassword = secureString;
正如您所提到的,防火墙可能会阻止连接,但RPC
连接通常在本地网络上未被阻止(除非另有配置)。另外,要添加到paqogomez关于服务的注释,请确保远程过程调用(RPC)(或远程过程调用(RPC)定位器,如果使用XP或Windows Server 2003)正在运行。