【发布时间】:2010-12-07 08:06:49
【问题描述】:
我在 Win 7 RTM x64 上创建了一个 .NET C# WinForms 应用程序,假设我调用了 DataInstaller。
当我在调试器之外运行这个程序时(目前只是一个没有功能的空表单),它可以正常工作,直到我关闭表单。然后我从程序兼容性助手那里收到一条消息:
这个程序可能没有正确安装
然后我可以选择使用推荐的设置重新安装,或者说安装确实按预期工作。
如果我将应用命名为“DataThingy”,这不是问题,我想这与名为 *Setup 的程序获得 UAC 盾牌图标的方式有关。
我假设我可以在应用程序清单中放入一些简单的东西来防止这种情况发生?
我不确定这是否发生在 Vista 上,因为我目前没有访问权限。
更改名称不是一个选项,关闭 UAC 不是一个选项,所以请不要建议这个!
编辑:
天哪。
看来,如果以下任何一项为真,UAC 就会坚持下去:
Exe 名称中包含 Installer 一词
AssemblyInfo.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 会将计算机完全锁定。 (其实我不敢尝试,因为我不完全相信我只是在傻)
【问题讨论】:
-
实际上,Windows 只是检查文件名中是否有“setup”或“install”之类的词来确定某个东西是否是安装程序。是的,这很愚蠢......可以做些什么吗?我想知道...不过 Q 很好。
-
我希望如此,因为这对我来说有点太“神奇”了。感谢您的投票!
-
@Wim - 不,它似乎是像帖子所暗示的 AssemblyTitle。在我的 Win7 SP1 机器上验证 PackageInstaller.exe - 如果程序集标题是 PackageNstaller 则没问题
标签: c# .net windows-7 uac manifest