DLL 로딩 시 0x800704ec - This Program is Blocked by Group Policy
이상하군요, 고객사 시스템에서 COM DLL을 로딩하지 못해 로그가 남습니다.
.NET Runtime version 4.0.30319.0 - Loading profiler failed during CoCreateInstance. Profiler CLSID: '{6C7CAF0F-D0E5-4274-A71B-6551761BBDC8}'. HRESULT: 0x800704ec. Process ID (decimal): 10828. Message ID: [0x2504].
0x800704ec 오류 메시지는
Error Lookup 도구로 보면 이렇게 나옵니다.
This program is blocked by group policy. For more information, contact your system administrator.
이에 대한 해결책의 실마리는 다음의 글에서 찾을 수 있는데요,
3 Ways to Fix This Program is Blocked by Group Policy Windows 10
; https://www.isunshare.com/blog/this-program-is-blocked-by-group-policy-error-windows-10/
모두 윈도우에서 제공하는 다양한 lock-down 정책을 풀어버리는 방법을 설명합니다.
method 1. gpedit.msc
User Configuration > Administrative Templates > System. In the right pane, scroll down and find out Don’t run specified Windows application.
method 2. Local Security Policy - Software Restriction Policies > Enforcement
Under Apply software restriction policies to the following users, select All users except local administrators. Tap on Apply and restart your PC.
method 3. delete all items in Microsoft folder.
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Group Policy
HKEY_CURRENT_USER\Software\Policies\Microsoft
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies
그런데, 저런 식으로 해결하는 것은 자신의 컴퓨터에서나 할 수 있지, 고객사의 서버 시스템에서 레지스트리 키를 통째로 다 지우는 건 허용되지 않는 경우가 보통입니다. 따라서, 정확한 해결책을 집어내야 하는데요, 제 경우와 관련해서 문제가 되었던 것은 AppLocker의 "DLL Rules" 때문이었습니다.
Windows - AppLocker의 "DLL Rules"를 이용해 임의 경로에 설치한 DLL의 로딩을 막는 방법
; https://www.sysnet.pe.kr/2/0/12454
만약, 특정 DLL이 D:\temp에 있고 다른 응용 프로그램에서 그 DLL을 로드해야 한다면 해당 폴더를 "Everyone" 계정으로 접근할 수 있는 또 다른 "DLL Rules"를 추가해야 합니다.
- Action : Allow
- User : Everyone
- Condition : Path
- Value : D:\temp\*
Understanding AppLocker allow and deny actions on rules
; https://learn.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/understanding-applocker-allow-and-deny-actions-on-rules
혹은, 그 DLL을 사용하는 EXE 프로세스를 임시로 사용자가 직접 실행시키는 유형이라면 AppLocker에 별도 DLL Rule을 정의하기보다 관리자 권한으로 상승시켜 실행하는 것도 한 방법이 될 수 있습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]