7zip - self-extracting executables require admin privileges and trigger compatibility warning
When I create self-extracting archive executables for Windows with 7zip, the .EXEs trigger UAC on Windows7. And frequently after unzipping, I get this:
I'm using commandline like: 7z a -sfx7z.sfx dir\
. Why are these things happening and can I fix them?
Solution 1:
You may want to disable this warning, if so, follow the steps below.
- Open Service Manager(press
+
R, typeservices.msc
and hit Enter). - Search for
Program Compatibility Assistance Service
in the list. - Right click on this service and select
Stop
. - Now again right click on
Program Compatibility Assistance Service
and selectProperties
. - Under
General
tab in theStartup type
section, click on the drop-down menu and selectDisabled
. - Click on
Apply
thenOK
.
Note: Program Compatibility Assistance monitors programs for known compatibility issues and can be very beneficial for end users. This tip is aimed at power users.
Another probable solution
is to embed a manifest file to avoid this alert. Something like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
How to embed the application manifest
into my executable?
You can use this utility(mt.exe
- assuming you have the sdk installed) from Microsoft to do this. You would use a similar command like this:
mt.exe -manifest "foo.manifest" -outputresource:"foo.exe";#1
Other Considerations
- Consider using this program(
7z SFX-Creator
), according to this page: self-extracting archives created will no longer cause alert PCA. - See if IExpress may be useful to you
Solution 2:
Your self-extracting archive likely contains setup
or install
in its file name. In this case, Windows expects it installs an application.
If Windows does not detect “usual installer activity”, it assumes the installation failed because of missing administrator privileges. That's the reason why it prompts to re-run installation using recommended settings, with elevated privileges.
This heuristic is used where the executable does not have requestedExecutionLevel
element in its manifest.
This issues could have been fixed in a newer version of 7zip self-extracting module.