WMI C# Server 接受 RDP 连接
本文关键字:RDP 连接 接受 Server WMI | 更新日期: 2023-09-27 18:31:07
我们有 6 台 Citrix 服务器。我正在尝试找出是否启用/禁用远程登录。
我计划将其放在要显示的网页上,如果是,则为绿色图标,如果不是,则为红色图标。
我已经设法连接到机器并提取操作系统信息等。但是,当我尝试连接以查看终端服务设置信息时。我收到无效类错误。
这是我的代码。
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..
有什么想法吗?
您需要确保服务器提供终端服务设置信息。WMI 使用非托管代码,因为并非所有服务器及其配置都提供所有信息。
可以使用 Mgmtclassgen 生成托管代码,同时确保服务器提供信息。
排序!!
我查找了错误的字段。
正确的是:
Label1.Text = "Remote Connections: " + m["Logons"].ToString();