c#让程序在WIN7下兼容模式运行

原文http://www.cnblogs.com/feiyangqingyun/archive/2013/05/29/3106238.html

以前在xp下开发,最近全部转移到WIN7下,发现程序运行会有个小问题,就是获取系统 当前是否静音的时候,以前在XP下运行的好好的,到了WIN7下就不行了,后面想到用管理员方式运行,还是不行,擦,后面突然想到,还有个兼容模式,之前 在WIN7下安装某些软件的时候,就提示不能安装在program file目录下,解决方法是右键属性选择兼容模式运行,受此启发,我也右键设置好兼容模式运行,擦,居然可以了!

 

于是把判断是否WIN7系统以及设置注册表封装到方法,启动时调用即可。

//确保以兼容模式运行
if (myHelper.IsWindows7)
   myHelper.SetRunInWinXP(myApp.AppPath + "\\myAlarmSystem.exe");

 

封装的方法:

#region  WIN7操作系统处理(兼容模式运行)

        public static bool IsWindows7
        {
            get {return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 1); }
        }

        public static void SetRunInWinXP(string EXEName)
        {
            RegistryKey key = Registry.CurrentUser.OpenSubKey("SoftWare\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers", true);//打开注册表子项

            if (key == null)//如果该项不存在的话,则创建该子项
                key = Registry.LocalMachine.CreateSubKey("SoftWare\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers");

            //如果不存在该值,则设置该值,重启程序应用设置
            if (key.GetValue(EXEName) == null)
            {
                key.SetValue(EXEName, "WINXPSP3");

                Application.ExitThread();
                Application.Exit();
                Application.Restart();
                System.Diagnostics.Process.GetCurrentProcess().Kill();
            }
        }

        #endregion

自此完美解决!

时间: 2025-01-24 08:36:16

c#让程序在WIN7下兼容模式运行的相关文章

Win7系统使用兼容模式运行程序的方法

  目前,很多电脑用户使用的Win7系统,虽然说Win7系统对大部分软件程序具有兼容性,但是,还是有个别软件程序因为Win7系统不兼容而不能使用.今天,小编就跟大家Win7系统使用兼容模式运行软件程序的方法,一起来看看吧! 兼容性疑难解答 Win7系统使用兼容模式运行程序的方法: 在有问题的软件的图标(注意不是快捷方式)上点击右键,选择"兼容性疑难解答". 系统会自动检测,稍等片刻. win7系统下载 ghost win7 win7旗舰版; 接下来会出来右图的对话框,选择"尝

win7系统兼容模式怎么找回?

  win7系统兼容模式怎么找回?一般情况下,在Win7系统中,如果遇到安装的某些软件或游戏无法正常运行的情况,大多用户会选择用兼容模式来运行.可是当你想以兼容模式运行时却发现在系统中找不到"兼容模式"的选项了,这该怎么办呢?下面小编就给大家带来win7系统找回兼容模式的方法,一起来看看吧. 具体步骤如下: 1.按下WIn+R组合键呼出运行,在框内输入"gpedit.msc"按下回车键打开组策略编辑器; 2.在组策略编辑器左侧依次展开"计算机配置"

gdi-打印程序在Win7 下 连接部分 佳能打印机 无法打印

问题描述 打印程序在Win7 下 连接部分 佳能打印机 无法打印 打印程序(gdi printer api)在xp下连佳能打印机能打印,换到win7环境下, 只有部分型号打印机可以打印,求指点! 解决方案 是程序代码,不是设置问题! 解决方案二: 使用兼容模式运行试试 解决方案三: dos模式时选择启用usb模式 解决方案四: Win7 设置打印机双面打印使能

在Vista中使用兼容模式运行应用程序

不少朋友在升级到Windows Vista后,却因所使用的应用程序在Windows Vista中不能正常工作而不得不退回到Windows XP,浪费时间不说,也让自己只能望Windows Vista众多诱人的功能与特性而兴叹. 其实,如果您打算升级到Windows Vista的话,除了首先检查通过Windows Vista认证的软件列表,查看您所使用的应用程序是不是通过了微软的"Certified for Windows Vista"或"Works with Windows

在Vista中使用兼容模式运行应用程序的方法_Vista

不少朋友在升级到Windows Vista后,却因所使用的应用程序在Windows Vista中不能正常工作而不得不退回到Windows XP,浪费时间不说,也让自己只能望Windows Vista众多诱人的功能与特性而兴叹. 其实,如果您打算升级到Windows Vista的话,除了首先检查通过Windows Vista认证的软件列表,查看您所使用的应用程序是不是通过了微软的"Certified for Windows Vista"或"Works with Windows

mfc win7 权限-MFC应用程序在win7下管理员权限的问题

问题描述 MFC应用程序在win7下管理员权限的问题 MFC开发的程序我知道可以通过配置清单文件的UAC执行级别来提示程序的权限.但问题时这样的配置在win7一定会提示UAC的对话框很不友好.在不关闭系统UAC的情况下有没有办法不弹出UAC对话框或者不设置UAC级别依旧可以拥有管理员权限呢? 解决方案 创建windows服务程序.

MFC程序在Win7下运行正常,在XP下提示参数不正确,运行不了

问题描述 MFC程序在Win7下运行正常,在XP下提示参数不正确,运行不了,直接不运行,是怎么回事呐 解决方案 解决方案二:也许是DLL版本的问题解决方案三:静态编译试试解决方案四:可能是文件相对路径或者外部控件丢失的问题解决方案五:64bit32bit问题?具体错误是啥,贴出来看看.解决方案六:贴图.谁知道啥错了.大部分程序是没错的.八成是用到参数了.参数配置不对啊/////////////////////////////////////////////////////////////////

C#打印图片设置报错 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。

问题描述 当应用程序不是以UserInteractive模式运行时显示模式对话框或窗体是无效操作.请指定ServiceNotification或DefaultDesktopOnly样式,以显示服务应用程序发出的通知.打印设置弹出框PrintDocumentpdDocument=newPrintDocument();PrintDialogprintDialog=newPrintDialog();printDialog.Document=pdDocument;if(printDialog.ShowD

c#写的程序,win7 下程序运行正常,升级win10后提示dll找不到,如何解决?

问题描述 都是64位系统,编译正常.之前win7运行没有任何问题,升级到win10后就提示如图.dll文件都是程序同一目录内.尝试注册dll文件也失败,新手,求指导 解决方案 解决方案二:windows10下重新编译过么?.NetFramework的框架是不是4.5?解决方案三:看一看这个dll的引用路径指向哪里解决方案四:找不到路径了,升级升没了或者位置变了解决方案五:引用1楼shoppo0505的回复: windows10下重新编译过么?.NetFramework的框架是不是4.5? win