我有一个 VB6 应用程序,我已经销售了 12 年多了。有时,我的用户很难让应用程序运行。数据写入将进入 /My Documents,因此除了安装文件(EXE 等)之外什么都不会进入 C:\Program Files(或 C:\Program Files (x86))。
解决他们的问题的方法是启动应用程序,即使它看起来挂起,然后显示任务管理器,查看进程,右键单击我的应用程序进程并取消选中 UAC 虚拟化。然后我让他们修复安装,一切都很好。
为什么我的进程被置于 UAC 虚拟化之下?如何防止这种情况发生?我还使用InstallShield 2010 Professional来创建安装,我不确定它是否与安装程序或应用程序本身有关。
要防止虚拟化,请向应用程序添加清单。无论您说 asInvoker 还是 requireAdministrator,您都将不再获得虚拟化。我猜 asInvoker 会更适合您,因为该应用程序无需提升即可正常工作。
您可以将 foo.exe.manifest 放在与 exe 相同的文件夹中,或者嵌入它,这有一些棘手的事情,例如使清单长度为 4 字节的倍数。这个问题 https://stackoverflow.com/questions/2182815/embedding-an-application-manifest-into-a-vb6-exe涵盖了嵌入的一些血淋淋的细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)