我做了个小工具,监视远程机器的系统服务状态,我在局域网中一切正常,但是改在公网状态时就不可以,机器是在内网,将IP映射到了路由器上,所有端口打开
结果总是提示:exp = {"RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA)"}
我打开了服务器的rpc服务,tcp/ip netbios,dhcp client,dcom等,机器也重起过,就是不行.
后来找了一台在IDC的机器测试,结果还是一样,请高人指点!
连接远程服务器的代码如下:
public static bool RemoteConnectValidate(string host, string userName, string password)
{
ConnectionOptions connectionOptions = new ConnectionOptions();
connectionOptions.Username = userName;
connectionOptions.Password = password;
ManagementScope managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions);
try
{
managementScope.Connect();
}
catch(Exception exp)
{ }
return managementScope.IsConnected;
}
结果总是提示:exp = {"RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA)"}
我打开了服务器的rpc服务,tcp/ip netbios,dhcp client,dcom等,机器也重起过,就是不行.
后来找了一台在IDC的机器测试,结果还是一样,请高人指点!
连接远程服务器的代码如下:
public static bool RemoteConnectValidate(string host, string userName, string password)
{
ConnectionOptions connectionOptions = new ConnectionOptions();
connectionOptions.Username = userName;
connectionOptions.Password = password;
ManagementScope managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions);
try
{
managementScope.Connect();
}
catch(Exception exp)
{ }
return managementScope.IsConnected;
}
只打开服务器的端口是不够的,每个经过的防火墙的端口均需开放,
这在公网上基本上是不可能的。
在路由器上,需要打开的,我也都打开了,针对它的防火墙我也全部都已经关闭另外如果说是因为路由的机器,所以不可以,但是为什么IDC里的机器也不行呢?
IDC那台机器是透明的网络环境,未做任何限制,且只有一个公网地址
望高人指点
1.被防火墙阻断
2.主机名或IP地址错误
3."TCP/IP NetBIOS Helper"服务没有运行
4."Remote Procedure Call (RPC)"服务没有运行
5."Windows Management Instrumentation"服务没有运行别的我也想不出了
如果服务器是你可以控制的,不如写一个windows服务程序放在服务器端用tcp监听查询指令然后返回要查询的本地系统的服务状态,只要监听端口不被屏蔽,保证不会出问题,也不需要用户凭证,也就是帐号信息
这些服务我已经全开了,DCOM权限已经给everyone所有权限了,结果还是不行
我现在的做法是在服务端放了个控制台,然后客户端发命令过去再返回
虽然感觉不一样,但是效果是一样了...