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

简介: 原文 http://www.cnblogs.com/feiyangqingyun/archive/2013/05/29/3106238.html 以前在xp下开发,最近全部转移到WIN7下,发现程序运行会有个小问题,就是获取系统 当前是否静音的时候,以前在XP下运行的好好的,到了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
复制代码


自此完美解决!

目录
相关文章
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
38 1
|
3月前
|
C# 开发者
C# 9.0中的模块初始化器:程序启动的新控制点
【1月更文挑战第14天】本文介绍了C# 9.0中引入的新特性——模块初始化器(Module initializers)。模块初始化器允许开发者在程序集加载时执行特定代码,为类型初始化提供了更细粒度的控制。文章详细阐述了模块初始化器的语法、用途以及与传统类型初始化器的区别,并通过示例代码展示了如何在实际项目中应用这一新特性。
|
3月前
|
编译器 C# 开发者
C# 9.0中的顶级语句:简化程序入口的新特性
【1月更文挑战第13天】本文介绍了C# 9.0中引入的顶级语句(Top-level statements)特性,该特性允许开发者在不使用传统的类和方法结构的情况下编写简洁的程序入口代码。文章详细阐述了顶级语句的语法、使用场景以及与传统程序结构的区别,并通过示例代码展示了其在实际应用中的便捷性。
|
4月前
|
缓存 C#
C# 操作路径(Path)类方法的使用与解析运行实例
C# 操作路径(Path)类方法的使用与解析运行实例
|
29天前
|
Java C# 开发工具
第一个C#程序
第一个C#程序
12 0
|
1月前
|
数据采集 存储 C#
抓取Instagram数据:Fizzler库带您进入C#程序的世界
在当今数字化的世界中,数据是无价之宝。社交媒体平台如Instagram成为了用户分享照片、视频和故事的热门场所。作为开发人员,我们可以利用爬虫技术来抓取这些平台上的数据,进行分析、挖掘和应用。本文将介绍如何使用C#编写一个简单的Instagram爬虫程序,使用Fizzler库来解析HTML页面,同时利用代理IP技术提高采集效率。
抓取Instagram数据:Fizzler库带您进入C#程序的世界
|
5月前
|
开发框架 网络协议 前端开发
一个对C#程序混淆加密,小巧但够用的小工具
一个对C#程序混淆加密,小巧但够用的小工具
83 1
|
4月前
|
设计模式 关系型数据库 程序员
UML中常用设计模式OCP、单例模式、简单工厂模式等模式讲解及C#中代码实现(附源码)
UML中常用设计模式OCP、单例模式、简单工厂模式等模式讲解及C#中代码实现(附源码)
43 0
|
4月前
|
编译器 应用服务中间件 数据库连接
解决C#运行程序修改数据后数据表不做更新的问题
解决C#运行程序修改数据后数据表不做更新的问题
41 0
|
5月前
|
数据可视化 BI C#
C#程序采用AOT发布,真的可以避免被反编译?
C#程序采用AOT发布,真的可以避免被反编译?
92 0