防止UAC虚拟化?

时间:2010-07-05 17:12:21

标签: uac

我有一个我已经销售超过12年的VB6应用程序。有时我的用户很难让应用程序运行。数据写入进入/我的文档,所以只有安装文件(EXE等)进入C:\ Program Files(或C:\ Program Files(x86))。

解决问题的方法是启动应用程序,即使它显示为挂起,然后显示任务管理器,查看进程,右键单击我的应用程序进程并取消选中UAC虚拟化。然后我让他们修理安装,一切都很好。

为什么我的流程被置于UAC虚拟化之下,如何防止这种情况发生?我还使用InstallShield 2010 Professional来创建安装,我不确定它是否与安装程序或应用程序本身有关。

1 个答案:

答案 0 :(得分:9)

要防止虚拟化,请向应用程序添加清单。无论你是asInvoker还是requireAdministrator,你都不会再获得虚拟化了。我猜测asInvoker会更好,因为应用程序工作正常,没有提升。

你可以把foo.exe.manifest放在与exe相同的文件夹中,或嵌入它,这有一些棘手的东西,比如使清单长4个字节的倍数。 This question涵盖了嵌入的一些血腥细节。