我有一个由VC6编写的exe文件,文件名是patch.exe,没有添加清单,在这种情况下,EXE文件需要管理员权限,即使我删除了所有代码,只需保留一个空主(),结果是一样的。但是如果我将EXE从patch.exe更改为a.exe,则问题就消失了。
以下是我的测试结果。 1. EXE由VC6遵守 2.没有清单或没有明确的特权 3. exe名称包含“patch”子字符串,不区分大小写
这是微软的问题吗?为什么呢?
尝试过VC2008,我无法重复。
答案 0 :(得分:3)
Vista等的UAC功能确实使用可执行文件的文件名来猜测它是否需要升级的管理员权限。因此,即使用户没有“以管理员身份运行”,“旧版”安装程序(例如setup.exe,install.exe,patch.exe(以及其他我猜)也将不会包含清单)将获得相应的权限。 “为了它。
为什么VC2008版本不会导致升级请求?我不知道。也许在它的某个地方嵌入了一个显式或隐含地说它不需要它的清单。
StackOverflow已经提出了这些问题。