Я перекрестно компилирую приложение с i586-mingw32msvc под ubuntu.Вставить файл манифеста, требующий уровня выполнения администратора с помощью mingw32
У меня возникли трудности с пониманием того, как внедрить файл манифеста, требующий уровня выполнения администратора с помощью mingw32.
В моем примере я использовал этот hello.c
:
int main() {
return 0;
}
этот файл ресурса hello.rc
:
1 Manifest "hello.exe.manifest"
этот файл манифеста hello.exe.manifest
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="hello" type="win32"/>
<description>Hello World</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
компилировать мой файл ресурсов с:
i586-mingw32msvc-windres hello.rc hello.o
Я компилирую мое окончательное заявление с:
i586-mingw32msvc-gcc -O3 -Os -s -o hello.exe hello.c hello.o
SigCheck не показывает файл манифеста работает sigcheck -m hello.exe
.
Теперь, когда я запускаю свое приложение под Windows, он не запускает UAC (= не запускается как администратор), а когда я присоединяю файл hello.exe.manifest
в той же папке, он вызывает UAC (как и ожидалось).
Что я пропустил?
EDIT1: Играя с Resource Hacker Я открыл Setup.exe
файл, который я создал с NSIS, единственная разумная разница в том, что Manifest
написано MANIFEST
в моем hello.exe
и Manifest
в Setup.exe
хотя в hello.rc
написано манифест. O_o
EDIT2: Я изменил Manifest
группу вручную Hacker Resource:
Теперь hello.exe
действует обычно вызывая предупреждение UAC и работает в качестве администратора. Кажется, «ошибка» с i586-mingw32msvc-windres
. :-)
Это может помочь: http://www.transmissionzero.co.uk/computing/win32-apps-with-mingw/ –
@JonathonReinhart Спасибо, но я пробовал то, что описано в этой ссылке тоже .. и [ связать его с] (https://msdn.microsoft.com/en-us/library/bb756973.aspx) тоже .. Но ничего не изменилось .. Я обновил свой файл 'hello.rc' до' 1 Manifest ' hello.exe.manifest ". .. С Resource Hacker Я открыл установщик NSIS (я скомпилировал с makensis), который требует администратора, все разумно одинаково; единственное, что отличается, - это поле манифеста, написанное «Манифест» в файле «Setup.exe» и написанное «MANIFEST» в моем файле 'hello.exe'! ([См. Здесь] (http://i.imgur.com/WzHtXnw.png)) –
Обычно вы компилируете файл .rc в файл '.res' (а не' .o') –