使用更新资源将UAC清单文件附加到任何PE

| 我想构建一个简单的工具来将UAC清单文件附加到给定的exe文件,代码可以正常工作,但是什么也没有发生。我必须说,当我用mainfest文件手动编译时,它可以正常工作。
procedure TForm1.Button1Click(Sender: TObject);
var
myRes:THandle;
test:PChar;
begin
test:=\'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\'+#13#10+
\'<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\'+#13#10+
\'<assemblyIdentity version=\"1.1.1.1\"\'+#13#10+
\'processorArchitecture=\"X86\"\'+#13#10+
\'name=\"[APP TO TEST WITH]\"\'+#13#10+ 
\'type=\"win32\"/>\'+#13#10+
\'<description>elevate execution level</description>\'+#13#10+
\'<trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\'+#13#10+
\'<security>\'+#13#10+
\'<requestedPrivileges>\'+#13#10+
\'<requestedExecutionLevel level=\"requireAdministrator\" uiAccess=\"false\"/>\'+#13#10+
\'</requestedPrivileges>\'+#13#10+
\'</security>\'+#13#10+
\'</trustInfo>\'+#13#10+
\'</assembly> \';
myRes := BeginUpdateResource(\'testuac.exe\',false);
UpdateResource(myRes,MakeIntResource(24),\'1\',1033,test,length(test));
EndUpdateResource(myres,false);
ShowMessage(SysErrorMessage(GetLastError));
end;//Compiled with Delphi 7
该代码可以使资源显示在exe内,但是不起作用。有什么想法吗?     
已邀请:
        看来您不能给清单资源指定任意名称,请尝试
UpdateResource(myRes,MakeIntResource(24),MakeIntResource(1),1033,test,length(test));
从winuser.h:
#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE( 1)
从指定默认激活上下文开始   资源ID 1   (CREATEPROCESS_MANIFEST_RESOURCE_ID)   .EXE被隐式激活   被执行。     

要回复问题请先登录注册