我在 Win 7 RTM x64 上创建了一个 .NET C# WinForms 应用程序,假设我调用了 DataInstaller。
当我在调试器之外运行这个程序时(目前只是一个没有功能的空表单),它可以正常工作,直到我关闭表单。然后我从程序兼容性助手那里收到一条消息,上面写着:
此程序可能未正确安装
然后我可以选择使用推荐的设置重新安装,或者说安装确实按预期工作。
如果我将应用程序命名为“DataThingy”,这不是问题,我想这与名为 *Setup 的程序获得 UAC 盾牌图标的方式有关。
我假设我可以在应用程序清单中放入一些简单的东西来防止这种情况发生?
我不确定这是否发生在 Vista 上,因为我目前没有访问权限。
更改名称不是一个选项,关闭 UAC 不是一个选项,所以请不要建议这个!
编辑:
我的天啊。
看来,如果以下任何一项属实,UAC 就会坚持下去:
exe 名称包含单词 Installer
装配信息.cs
AssemblyTitle contains the word 'Installer'
e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word 'Installer'
e.g. [assembly: AssemblyProduct("Data Installation Utility")]
“安装程序”也可以是“安装程序”。
它令人难以置信,它确实如此。显然,一位老 VB6 程序员被调到了雷德蒙德的 UAC 团队。
我仍然需要一个解决方法,我不准备接受我的应用程序不可能被称为安装程序,因为它不会触及注册表或将任何文件放在 Program Files 文件夹中。
我假设如果我尝试执行名为 IAmAVirus.exe 的应用程序,UAC 会将机器完全锁定。(其实我不敢尝试,因为我不完全相信我只是在傻)