【问题标题】:Detect Server Display Resolution检测服务器显示分辨率
【发布时间】:2011-03-15 22:26:51
【问题描述】:

在 Windows Server 2008 上,我可以拥有 Web 服务或可以从 C# 应用程序查询显示属性(分辨率(高度和宽度))的东西。 C# 应用程序不在服务器上运行,所以我不能只从应用程序本身检测它。

补充说明原因:

我将有一个名为“display”的用户,该用户将登录并显示一个网站(在服务器上),我希望能够从桌面应用程序检查显示,以便用户知道设计模板的分辨率为了。分辨率会随着显示器的不同而变化,所以它不能是一个设定值。

【问题讨论】:

  • 为什么不在服务器上运行的客户端应用程序需要知道服务器的显示分辨率(顺便说一下,它可能只有一个命令行界面)?
  • 您是否要求客户端应用检索服务器屏幕的显示尺寸?
  • 你的意思是你服务器上的显卡可以支持的最大分辨率吗?还是默认分辨率(HLM\SYSTEM\CurrentControlSet\Control\Video\....\0000\DefaultSettings)?还是为特定 RDP 用户设置的分辨率?
  • 我将有一个名为“display”的用户,它将登录显示一个网站(在服务器上),我希望能够从桌面应用程序检查显示,以便用户知道什么设计模板的分辨率。

标签: c# .net asp.net iis windows-server-2008-r2


【解决方案1】:

我建议只使用 WMI 查询服务器。在此处查看第三个示例:

http://msdn.microsoft.com/en-us/library/aa394591%28v=vs.85%29.aspx

【讨论】:

  • 非常感谢,我终于开始尝试了,效果很好!我接受了你的回答,因为它确实是最好的答案,我还添加了我的代码 sn-p 来帮助其他人。
【解决方案2】:

我的代码

这是我用来解决问题的代码:

System.Management.ConnectionOptions oConnectionOptions = new System.Management.ConnectionOptions();
{
    oConnectionOptions.Username = ServerManagement.GetServerUser();
    oConnectionOptions.Password = ServerManagement.GetServerPassword();
}
ManagementPath oPath = new ManagementPath("\\\\" + ServerManagement.GetServerAddress() + "\\root\\cimv2");
ManagementScope oScope = new ManagementScope(oPath, oConnectionOptions);
try
{
    oScope.Connect();
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor");
    ManagementObjectCollection obj = searcher.Get();
    foreach (ManagementObject service in obj)
    {
        this.DisplayHeight = Convert.ToInt16(service["ScreenHeight"]);
        this.DisplayWidth = Convert.ToInt16(service["ScreenWidth"]);
    }
}
catch (Exception)
{
    MessageBox.Show("Cannot connect to server, please try again later.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    相关资源
    最近更新 更多