我们有6台Citrix服务器。我试图找出是否启用了远程登录。
我计划将其放在网页上以显示绿色图标(如果有)或红色(如果不是)。
我已经设法连接到机器并提取操作系统信息等。但是,当我尝试连接以查看TerminalServiceSetting信息时...我收到无效的类错误。
这是我的代码。
ManagementScope scope = new ManagementScope("\\\\MACHINENAME\\ROOT\\cimv2");
scope.Connect();
//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_TerminalServiceSetting");
//create object searcher
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
//get collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();
//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
// access properties of the WMI object
Label1.Text = m["AllowTSConnections"].ToString();
}
如果有人能够对它有所了解那就太棒了。
由于
更新
我现在找到了代码(我认为),它会检查是否启用了远程连接。
ManagementScope scope =
new ManagementScope("\\\\MACHINENAME\\root\\CIMV2\\TerminalServices",con);
scope.Options.EnablePrivileges = true;
scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;
scope.Options.Impersonation = ImpersonationLevel.Impersonate;
scope.Connect();
//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_TerminalServiceSetting");
//create object searcher
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
//get collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();
//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
if (m["AllowTSConnections"].ToString() == "1")
{
Redicon.Visible = false;
}
else
{
Greenicon.Visible = false;
}
}
然而,当我运行代码时,我得到“1”..这很好。但是,如果我拒绝服务器上的远程登录并重新运行代码,它将保持为1 ..
有什么想法吗?
答案 0 :(得分:1)
您需要确保服务器提供TerminalServiceSetting信息。 WMI使用非托管代码,因为并非所有服务器及其配置都提供所有信息。
您可以使用Mgmtclassgen生成托管代码,同时确保服务器提供信息。
答案 1 :(得分:0)
排序!!!
我正在查找错误的字段。
正确的是:
Label1.Text = "Remote Connections: " + m["Logons"].ToString();