【问题标题】:WMI C# Server accepts RDP connectionsWMI C# 服务器接受 RDP 连接
【发布时间】:2013-09-17 23:29:29
【问题描述】:

我们有 6 台 Citrix 服务器。我正在尝试了解远程登录是否已启用/禁用。

我打算把它放到网页上显示,如果是绿色图标,如果不是红色图标。

我已成功连接到机器并提取操作系统信息等。但是,当我尝试连接以查看 TerminalServiceSetting 信息时。我收到 Invalid Class 错误。

这是我的代码。

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..

有什么想法吗?

【问题讨论】:

    标签: c# wmi terminal-services


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

    排序!!!

    我查错了字段。

    正确的是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多