我已经在Win 7 RTM x64上创建了一个.NET C# WinForms应用程序,假设我称之为DataInstaller。当我在除调试器之外的模式下运行此程序(目前仅为一个空表单,没有功能),它可以正常工作,直到我关闭该表单。然后我会收到来自“程序兼容性助手”的消息:
此程序可能未正确安装。
随后我可以选择重新使用推荐的设置安装或表示安装按预期工作。
如果我将应用程序命名为“DataThingy”,这就不是问题,我猜想这与被称为*Setup的程序获得UAC盾牌图标的方式有关。 我认为我可以在应用程序清单中放置一些简单的内容来防止出现这种情况? 我不确定这是否会发生在Vista上,因为我目前无法访问。 更改名称不是选项,关闭UAC也不是选项,请不要建议这样做! 编辑: 我的天啊。 看起来,如果以下任何条件成立,UAC都会干预: Exe名称包含单词Installer AssemblyInfo.csAssemblyTitle contains the word 'Installer'
e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word 'Installer'
e.g. [assembly: AssemblyProduct("Data Installation Utility")]
'安装程序'也可以称为 '安装设置程序'。
这真是匪夷所思,显然一位老的VB6程序员被调到了Redmond的UAC团队。
我仍然需要一个解决方法,我不愿意接受我的应用程序不能被称为安装程序,因为它不会触及注册表或将任何文件放入Program Files文件夹中。
我假设如果我尝试执行我的名为IAmAVirus.exe的应用程序,UAC会使机器完全被锁定。(事实上,我不敢尝试,因为我并不确定我只是在瞎搞)