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 C# Server 接受 RDP 连接

您需要确保服务器提供终端服务设置信息。WMI 使用非托管代码,因为并非所有服务器及其配置都提供所有信息。

可以使用 Mgmtclassgen 生成托管代码,同时确保服务器提供信息。

排序!!

我查找了错误的字段。

正确的是:

Label1.Text = "Remote Connections: " + m["Logons"].ToString();