Manifest Files
A special XML-based file that enables System Themes in Windows
For dBASE Plus,
this file is named, "Plus.exe.manifest", and resides in the
dBASE Plus install path of the
\Bin folder
For all dBASE Plus
runtime applications, this file is named for the application name, "Appname.exe.manifest",
and must reside in the same folder as the executable.
Some specific notes on a couple of manifest settings...
1 - application name section
At the top of the manifest file you need to make sure that the following sections have the correct name of the .exe
here are those sections for the plus.exe.manifest
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="PLUS.EXE"
type="win32"
/>
<description>PLUS.EXE Manifest</description>
2 - Version 6 common controls section
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
3 - dpiAware section
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>false</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
Here are all the supported settings within the manfiest file for dpiAware:
true
false
true/pm
per monitor
To ensure automatic scaling is occurring a setting of 'false' should be used.
Here is a link to msdn where all these settings are described:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa374191(v=vs.85).aspx
Search within this web page for: dpiaware
4 - Trusted execution level section
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
options here are :
highestAvailable
will elevate if the current user is an administrator.
When a standard user runs the process, no UAC dialog is shown and the process runs with the standard token.
When an admin user executes, the UAC consent dialog is shown and the process will then run elevated.
You should only use highestAvailable if your program is capable of running with a limited functionality in case the user is not able to elevate.
requireAdministrator
If your program requires admin rights to function then you need to use requireAdministrator.
When a standard user starts such a process, the over-the-shoulder UAC dialog is shown.
That gives the user an opportunity to ask an admin to supply their credentials.
asInvoker
Basically, "asInvoker" will use the user's default security settings. It's described as "The application runs with the same access token as the parent process.", which means the same security token is used as the calling process, which is typically the desktop shell (or the process that launches this, if you launch your app from another program)