阻止UAC虚拟化?

发布于 2024-09-08 09:49:10 字数 341 浏览 3 评论 0原文

我有一个 VB6 应用程序,我已经销售了 12 年多了。有时,我的用户很难让应用程序运行。数据写入将进入 /My Documents,因此除了安装文件(EXE 等)之外什么都不会进入 C:\Program Files(或 C:\Program Files (x86))。

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

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

I have a VB6 app that I've been selling for over 12 years. Sometimes I have users that have a hard time getting the app to run. The data writes are going into /My Documents so nothing but the installation files (EXE, etc.) are going into C:\Program Files (or C:\Program Files (x86)).

The fix to their problem is to start the app, even though it appears hung, then show the task manager, view processes, right-click my app's process and uncheck UAC Virtualization. Then I have them repair the installation and all is fine.

Why is my process getting put under UAC Virtualization and how do I prevent this from occuring? I also use InstallShield 2010 Professional to create the installation, I'm not sure if it's related to the installer or the app itself.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

煮茶煮酒煮时光 2024-09-15 09:49:10

要防止虚拟化,请向应用程序添加清单。无论您说 asInvoker 还是 requireAdministrator,您都将不再获得虚拟化。我猜 asInvoker 会更适合您,因为该应用程序无需提升即可正常工作。

您可以将 foo.exe.manifest 放在与 exe 相同的文件夹中,或者嵌入它,这有一些棘手的事情,例如使清单长度为 4 字节的倍数。 这个问题涵盖了嵌入的一些血淋淋的细节。

To prevent virtualization, add a manifest to the application. Whether you say asInvoker or requireAdministrator, you won't get virtualization any more. I am guessing asInvoker will be better for you since the app works fine without elevating.

You can just put foo.exe.manifest in the same folder as the exe, or embed it, which has some tricky stuff like making the manifest a multiple of 4 bytes long. This question covers some gory details of embedding.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文