刚刚编译LZMA SDK,结果其中的一个项目编译后没法调试,一看编译出来的EXE右下角打了个小盾牌。。
于是感到非常的莫名其妙。SDK是纯C写的,根本没有添加资源,不可能靠写manifest文件来加UAC的。于是怀疑是导入表导入了某些函数?查了下导入表也没发现个所以然来。
最后很无语地发现,原来是因为。。编译的EXE文件名叫SfxSetup。。。
UAC会很弱智地从文件名判断是否启用UAC,文件名中带有setup、update、install等字样的都会被开启uac,这些文件名的程序反而要用manifest文件来取消默认添加的uac才行。。