PerMonitorV2 DPI Warning Won’t Clear in WACK

James Pruett 85 Reputation points
2026-01-05T04:27:59.38+00:00

Hi everyone — I’m hoping someone can help me break out of a loop I’ve been stuck in for days.

I’m preparing a WinForms .NET Framework 4.7.2 app for the Microsoft Store, and the Windows App Certification Kit keeps giving me the same DPI Awareness Validation warning, even though I’ve followed every documented step to fix it.

Here’s what I’ve done so far:

Created a custom manifest (ATI.exe.manifest) in the project root

Added the PerMonitorV2 DPI declarations:

xml

<windowsSettings>
    <dpiAware>true/pm</dpiAware>
    <dpiAwareness>PerMonitorV2</dpiAwareness>
</windowsSettings>

Updated my .vbproj to point to the correct manifest:

xml

<ApplicationManifest>ATI.exe.manifest</ApplicationManifest>

Deleted bin/obj folders, rebuilt the project, repackaged the MSIX, and reran WACK

Verified the manifest file is next to the .vbproj and contains the correct XML

Confirmed there are no duplicate ApplicationManifest entries in the project file

Despite all of this, WACK still reports:

“File ATI.ati.exe neither has PerMonitorV2 manifested nor calls into DPI Awareness APIs.”

So it looks like Visual Studio is still embedding a different manifest, or the MSIX packaging step is overriding mine — but I can’t figure out where the disconnect is.

I’m sure I’m missing something simple, but at this point I feel like I’m going in circles. Any guidance on how to ensure the correct manifest is actually embedded into the final EXE would be greatly appreciated.

Thanks in advance.

Windows development | Windows App SDK
{count} votes

Answer accepted by question author
  1. Michael Le (WICLOUD CORPORATION) 10,475 Reputation points Microsoft External Staff Moderator
    2026-01-05T08:28:50.5166667+00:00

    Hello @James Pruett ,

    I’ve confirmed the manifest is embedded correctly using sigcheck -m ATI.ati.exe

    My .vbproj explicitly points to ATI.exe.manifest, and it contains the correct PerMonitorV2 block

    It seems like there’s a mismatch between the manifest and the actual executable name. Please verify that the manifest file name ATI.ati.exe.manifest correctly matches the executable name ATI.ati.exe.

    <PropertyGroup>
        <AssemblyName>ATI.ati</AssemblyName>
        <ApplicationManifest>ATI.ati.exe.manifest</ApplicationManifest>
    </PropertyGroup>
    

    That said, the double extension can be a bit confusing. For clarity, you may want to rename the executable to something more conventional.

    1 person found this answer helpful.
    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.