Missing api-ms-win-shcore-scaling-l1-1-1.dll on upgrade from 5.2.5-66 to 5.2.5-84 on Windows 7

Showing results for 
Show  only  | Search instead for 
Did you mean: 
Palo Alto Networks Approved
Palo Alto Networks Approved
Community Expert Verified
Community Expert Verified

Missing api-ms-win-shcore-scaling-l1-1-1.dll on upgrade from 5.2.5-66 to 5.2.5-84 on Windows 7

L0 Member



We recently upgraded our GlobalProtect clients to 5.2.5-84. Since then, the client won't start on Windows 7 claiming that it cannot find the following file : api-ms-win-shcore-scaling-l1-1-1.dll


On Win 7 x86, we managed to make it work by copying a dll found on a ressource forum but it doesn't with Win 7x64

Does someone encounter the same issue ?

Did someone find a workaround ?


Accepted Solutions

L0 Member



I managed to get 5.2.7-37 running on Win7 x64. The issue is simply the newer versions use a dll and API that does not exist in 7 but was introduced in 8/8.1 and later versions. This excellent answer on SO explains the specifics if you are interested: https://stackoverflow.com/a/50276714 


Dependency Walker showed that PanGPA.exe only imports one single function from the API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL, SetProcessDpiAwareness(...), so it was easy enough to just roll my own dummy DLL file in Visual Studio 2013 that exports this single function, compile that for x64 and voilá, GlobalProtect is a happy camper.


For the sake of it, I even implemented the function such that it actually makes use of the "legacy" Win7 API to accomplish the same result, SetProcessDPIAware() from user32.dll.


I will try and distribute my dll in binary form, but you are free to just input below code into your copy of VS13 (Create a new C++ DLL project from the menu)  and compile your own DLL file if you don't trust me. It's literally a one-liner.


In your header, put something like this:


extern "C" __declspec(dllexport) HRESULT SetProcessDpiAwareness(PROCESS_DPI_AWARENESS value);


In your cpp file, put:

HRESULT SetProcessDpiAwareness(PROCESS_DPI_AWARENESS value) {
	return SetProcessDPIAware();


When compiling, make sure you select x64 as your platform from the menu, otherwise GlobalProtect will crash with 0xc000007b (STATUS_INVALID_IMAGE_FORMAT).


When done compiling, make sure your file name is API-MS-WIN-SHCORE-SCALING-L1-1-1.dll and copy the file to C:\Program Files\Palo Alto Networks\GlobalProtect.


If rules in this community allow (dear mods please remove the link if this is not allowed), I uploaded my binary dll file to mega, see https://mega.nz/file/7DgmBaTJ#JUdmDbAY13E0McK6nKbYhD9vjV_IFrpLcvlZRNCg9GQ 


Have fun!


View solution in original post


L1 Bithead

Yeah, I know that, that's a bit annoying.

Anyway, since there was a workaround on 7 x86, I was hoping to find one for the x64 version.

No luck so far.


Thanks anyway

Ok, but then is there a way to avoid to client asking to update to the new version each time I launch it? This is becoming really annoying..


Thanks for any help on this.




That's a setting that is set on the GlobalProtect portal side of things, not something that you can control on the client side. If you admin the service you are connecting to you can modify this under GlobalProtect Portal -> Agent configs. 

Like what you see?

Show your appreciation!

Click Like if a post is helpful to you or if you just want to show your support.

Click Accept as Solution to acknowledge that the answer to your question has been provided.

The button appears next to the replies on topics you’ve started. The member who gave the solution and all future visitors to this topic will appreciate it!

These simple actions take just seconds of your time, but go a long way in showing appreciation for community members and the LIVEcommunity as a whole!

The LIVEcommunity thanks you for your participation!