Windows 7 Windows 7 EXE文件名以“开始”;“补丁”;,韩元';跑不动
可能重复:Windows 7 Windows 7 EXE文件名以“开始”;“补丁”;,韩元';跑不动,windows-7,Windows 7,可能重复: 我的一个程序叫做“PatchCompiler.exe”。它在控制台中运行。或者更确切地说,它不会运行,因为如果EXE文件的名称中有“补丁”,则Windows 7会以不同的方式处理该文件,需要提升权限(“是否允许来自未知发布者的以下程序对此计算机进行更改?”)。即使我授予这个权限,它也会在一个短暂的控制台中运行,在我看到它的输出之前就消失了 是的,我知道我可以通过重命名我的程序来解决这个问题。但是它编译补丁 有人知道如何改变这种恼人的行为吗 编辑后添加:只是为了让自己明白:我不希望我
我的一个程序叫做“PatchCompiler.exe”。它在控制台中运行。或者更确切地说,它不会运行,因为如果EXE文件的名称中有“补丁”,则Windows 7会以不同的方式处理该文件,需要提升权限(“是否允许来自未知发布者的以下程序对此计算机进行更改?”)。即使我授予这个权限,它也会在一个短暂的控制台中运行,在我看到它的输出之前就消失了 是的,我知道我可以通过重命名我的程序来解决这个问题。但是它编译补丁 有人知道如何改变这种恼人的行为吗 编辑后添加:只是为了让自己明白:我不希望我的程序以提升的状态运行!谁知道我在里面留下了什么bug?附加一个包含
<requestedExecutionLevel level="asInvoker" uiAccess="true"/>
据我所知,这是一个功能,而不是一个bug。这个想法是为了确保你真的想在你的电脑上运行补丁 而且,据我所知,没有一个很好的方法来解决这个问题。您可以禁用UAC或重命名程序 就控制台而言,这是一个编程问题,没有足够的信息来帮助您。您只需添加一个检查,它将在关闭程序之前等待您执行某项操作。一个典型的例子是从终端的末尾读取字符
您可以启动一个提升的命令提示符,该提示符在启动程序时不应显示UAC警告,并且在程序完成后应保持打开状态。好的,多亏了phihag的回答,我让它工作了。它不能直接从盒子里取出,所以我做了如下工作:
Manifest.xml
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Manifest.res
:
windres --input Manifest.rc --output Manifest.res --output-format=coff
Manifest.res
添加到链接:
g++ -Wall -oPatchCompiler PatchCompiler.cpp Manifest.res
就这样 功能或错误。。。信任Windows将文件内容基于名称,从而产生FUN.JPG.EXE病毒。。。胜利的神奇数字!Windows的这个奇怪的东西意味着我可以通过简单地重命名一个好的程序,让它看起来很邪恶。。。相反,以同样的方式使一个邪恶的补丁程序变得良好。干得好,微软。您可能认为最好根据程序的功能确定权限。。。如果它打开一个.exe/.dll进行读/写与执行。。。这是一个需要提升隐私的问题。这是一个bug;文件名与文件的内容无关。@David X这是一项功能。我不会评论它有多聪明。还有
安装程序检测技术下的一个操作系统,它的行为基于字符序列“补丁”是否出现在可执行文件的名称中?真的,只有傻瓜才会设计这个。这是一个如此愚蠢的功能,以至于它是一个bug。我如何在MinGW下使用g++实现这一点?@TonyK请参阅以获得详细解释。这很有效(经过一点按摩)。非常感谢。我已经把细节写进了一个新的答案。(我会接受你的回答,但我最初将此作为另一个TonyK
..发布在superuser.com上)联系一个mod,让他们合并用户。@TonyK:对不起,我无法合并一个不存在的帐户。您必须使用相同的凭据登录到SU,以便迁移问题以保留您的身份。我在一个名为“DynamicDispatchTest.exe”的程序中遇到了类似的问题。没什么大不了的,因为很明显(从名字上看)它只是我创建的一个快速程序,用来测试一些东西,但我从来没有想到所有东西的文件名都是罪魁祸首!
g++ -Wall -oPatchCompiler PatchCompiler.cpp Manifest.res