Windows7,程序兼容助手:这个程序可能安装不正确(做注册表里设置白名单,软件自身的名字不能带setup)

Windows上有一个很奇怪的一个现象,一个exe只要名字里面带了setup\install之类的,打开exe后立即退出就会弹出下面的窗口。

解决方法:

方法一、更改exe的名字,去掉setup\install,即使是资源文件rc中的setup\install也要去掉。

方法二、在main函数入口处调用下面的函数,将当前exe写入Windows的“注册表白名单”中去,关闭时Windows就不会弹出兼容助手了。

[cpp] view plain copy

  1. bool RegWritePca()
  2. {
  3. HKEY hKey;
  4. if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER,
  5. L"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Compatibility Assistant\\Persisted", 0, KEY_READ | KEY_WRITE, &hKey))
  6. {
  7. return false;
  8. }
  9. wchar_t szPath[MAX_PATH];
  10. GetModuleFileName(NULL, szPath, MAX_PATH);
  11. DWORD dwCode = 1;
  12. LONG lRet = RegSetValueEx(hKey, szPath, 0, REG_DWORD, (byte*)&dwCode, sizeof(DWORD));
  13. RegCloseKey(hKey);
  14. return lRet == ERROR_SUCCESS;
  15. }

参考链接:http://blog.csdn.net/mfcing/article/details/52087704

http://blog.csdn.net/caoshangpa/article/details/72235939

时间: 2024-08-03 21:49:03

Windows7,程序兼容助手:这个程序可能安装不正确(做注册表里设置白名单,软件自身的名字不能带setup)的相关文章

windows10下安装Microsoft Visual Studio 2013.4 Community enu中文语言包出错,提示“”程序兼容模式已打开.请将其关闭”的解决方法

原来win8系统用着有点慢,就选择重新安装系统,安装了win10预览版,感觉确实很不一样,呵呵.在安装了vs2013社区版后,默认是英文版的,因为英文不太好,需要安装简体中文语言包,但是安装时一直报“程序兼容模式已打开,请将其关闭然后重新运行安装程序”, 在使用兼容win8模式安装后仍然提示这个,郁闷了好几天,后来在网上找到一个解决办法,记录如下: 使用命令提示符打开vs_langpack.exe,在后面添加 /Uninstall,类似这样D:\tools\vslang>vs_langpack.

怎样让ABBYY FineReader与其它应用程序兼容使用

ABBYY FineReader 12支持与 Microsoft Office 应用程序和 Windows 资源管理器进行集成.可以帮助大家在使用 Microsoft Outlook.Microsoft Word.Microsoft Excel 和 Windows 资源管理器时识别文档,那么ABBYY FineReader12到底是怎么和这些应用程序兼容使用的呢? 若有疑问可直接访问:http://www.abbyychina.com/FRshiyongjiqiao/fr-chengxu-jic

在Vista以上版本运行WTL程序,有时候会提示“这个程序可能安装补正确...”的错误

在Win7/Vista下,如何以兼容模式运行exe? https://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx 问题描述:在Vista以上版本运行WTL程序,有时候会提示“这个程序可能安装补正确...”的错误,如下图所示: 解决方法:需要在VS中设置,工程属性->Configuration Properties->Manifest Tool->Input and Output->Addition Manifest F

缔造程序兼容的契约(ABI)

缔造程序兼容的契约(ABI) 1. API是什么? ABI(application binary interface),指的时应用程序二进制接口.EABI(embeded application binary interface),指的是嵌入式应用程序二进制接口,和ABI的区别在于应用程序中允许使用特权指令.ABI广义上的概率指的是应用程序在二进制层面的规范,狭义上指的是某个硬件/操作系统/虚拟机平台的规范文档. 2.ABI和 API的区别: ABI是二进制层面的规范,而API是源码层面的规范.

vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装。的解决方法

vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装.的解决方法_华英雄_新浪博客 http://blog.sina.com.cn/s/blog_54bf02090100xlqy.html   现象:VMware Workstation 8.0在安装VMware Tools时弹出对话框,提示"安装程序无法继续.Microsoft Runtime DLL安装程序未能完成安装."如图: 原因:虚拟机中Windows Installer服务

.net程序错误:BadImageFormatException....如果在安装32位Oracle客户端组件的情况下以64位模式运行

OracleClient 程序要连oracle数据库,提示如下错误: 数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题. 1.IIS部署时 网上搜索了一下,有各种办法,试过多安装了一个64位的oracle11g客户端,还是不行.后来想到是否是iis的问题,之前配置iis的时候好像碰到过32位64位的一个设置,看了以前的博客之后把应用程序池做了如下设置

linux程序包管理与源码安装

一.RPM包简介: linux之所以那么强大,除了linux强大的内核,还有很大一部分取决于linux的软件包,假想没有软件包,就一个内核在运行,人类需要和内核打交道是多么痛苦,但是聪明的人类发明了bash,通过bash,人就可以使用高级语言,和机器沟通,这其中的bash起始也是一个软件包,当然linux除了bash还有各式各样的包,帮助我们完成各种任务,这其中便涉及到程序的包管理. rpm包管理器(原名redhat package manager,后成为行业标准,命名为rpm package

关于“这个程序可能安装不正确”的一种解释

最近做一个程序自动安装的工具,在win8下面是没有问题的,但是在Win7下面就会被提示"这个程序可能安装不正确",用管理员权限运行也不行.于是Google之,发现一段解释(来自于stackoverflow的一位ID是user876725的网友): I ran into the same error message when running a new Qt based app I built. Same symptoms - would get this 'helpful' messa

Unix下C程序内存泄漏检测工具Valgrind安装与使用

Unix下C程序内存泄漏检测工具Valgrind安装与使用 Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖. Valgrind遵守GNU通用公共许可证条款,是一款自由软件. 官网 http://www.valgrind.org 下载与安装 #wget http://www.valgrind.org/downlo