【问题标题】:Is there any way to prevent my application from running on Windows 7 machines?有什么方法可以阻止我的应用程序在 Windows 7 机器上运行?
【发布时间】:2013-06-07 06:14:01
【问题描述】:

如标题所示,我在使用 Windows XP 的机器上的 Visual Express 2010 上创建了一个应用程序(Windows 窗体)。我在运行 Windows 7 的机器上测试了该应用程序,按钮和控件的格式更改有点毁了应用程序的整体外观。

有什么方法可以阻止我的应用程序在 Windows 7 计算机上运行?

其他替代方法是检查用户使用的操作系统,并根据此更改按钮/控件/等的对齐/位置...

最好的方法是什么?

提前感谢您的回答。

【问题讨论】:

  • 是什么让您认为您的应用程序在所有 WinXP 系统上看起来都一样,无论主题设置如何?如果在 XP 上无法重现完全相同的问题(可能通过安装第三方主题),我会感到非常惊讶。
  • 您是否真的只允许拥有(半)过时操作系统的人运行您的程序?
  • @MatthewWatson 根据问题,Windows 8 没问题。 :)
  • 最好的方法是让你的 UI 独立于操作系统。第二个最好的办法是为 Windows 7 修复它。现在支持 XP 已经没有意义了。
  • 这是一个针对特定用户的应用程序,这些用户只运行 XP 计算机(如果由我决定,他们不会运行 XP,相信我 :])。在某个时候,他们的机器将升级到 Windows 7,然后我将在 Windows 7 上创建应用程序的“端口”,以便它在 Windows 7 中看起来也可以。正如我所说,这只是一个问题设计和外观。

标签: c# windows visual-studio-2010


【解决方案1】:

只需检查您的应用运行的操作系统版本,如果您的程序在 Windows 7 上运行,则退出程序,例如,

if (Environment.OSVersion.ToString().Contains("Microsoft Windows NT 6.1"))
{
    //code to execute if running win 7
}

【讨论】:

  • 非常感谢您的回答,山姆!我想我会检查一下,然后更改按钮/控件/等的位置...
  • 欢迎您。您可以尝试改用 WPF,它 automatically 会考虑 dpi。
【解决方案2】:

您可以使用System.Environment.OSVersion,但最好的方法是让您的应用程序在 Windows 7 上运行并正常显示,您真的不想失去拥有 Windows 7 的客户端(尤其是现在这是最使用 Windows 版本)

【讨论】:

    【解决方案3】:

    您几乎可以肯定地错误地识别了问题的根源。到目前为止,表单布局损坏的最常见原因是视频适配器的 DPI 设置。它决定了每英寸的像素数,非常在 Windows 7 上很容易更改。在 XP 上也可以更改,只是更难更改。设置很重要,显示器越来越好,尤其是在 Apple 推动“视网膜”显示器的情况下。

    通过调整 Program.cs 中的 Main() 方法来添加检查代码。让它看起来像这样:

        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            var main = new Form1();
            using (var gr = main.CreateGraphics()) {
                if (gr.DpiX != 96) {
                    MessageBox.Show("Sorry, didn't get this done yet.  Bye");
                    Environment.Exit(1);
                }
            }
            Application.Run(main);
        }
    

    修复表单布局当然是长期解决方案。标准错误是为控件提供与表单的 Font 属性或其容器的不匹配的自己的 Font 属性。在 XP 机器上触发相同问题的一种简单方法是模拟 DPI 设置的作用。省去了在 XP 上查找设置以及更改时必须重新启动机器的麻烦。将此代码粘贴到您的表单中:

        protected override void OnLoad(EventArgs e) {
            this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
            base.OnLoad(e);
        }
    

    这相当于在 Win7 显示首选项中选择 125% 缩放。

    【讨论】:

    • 谢谢你,汉斯,我会尽量这样做。
    猜你喜欢
    • 2017-01-18
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2015-07-07
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多