2012-02-03 5 views
2

Windows 2008에서 제대로 시작할 수있는 응용 프로그램이 있으며 App1을 호출 할 수 있습니다.Windows 2008 : __COMPAT_LAYER = ElevateCreateProcess 일 때 응용 프로그램이 충돌합니다.

다른 응용 프로그램 (시작 프로그램)에서 같은 응용 프로그램을 시작하면 secur32.dll에서 App1이 충돌합니다. 연구 결과 2 건의 환경이 달랐습니다.

응용 프로그램이 충돌하면 환경에 추가 변수 __COMPAT_LAYER = ElevateCreateProcess가 하나 있습니다.

전역 시스템 수준에서 __COMPAT_LAYER = asInvoker를 설정해도 문제가 해결되지 않았습니다. HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers의 레지스트리에 App1 및 시작 프로그램을 추가해도 문제가 해결되지 않습니다.

두 프로그램은 매니페스트에 다음과 같은 권한이 : requestedExecutionLevel 레벨 = "asInvoker"있는 UIAccess =

는 UAC가 꺼져 "거짓". Windows 업데이트가 최신입니다. 유일한 해결책은 사이에 __COMPAT_LAYER를 지우거나 asInvoker로 설정하는 다른 프로그램을 주입하는 것입니다.

ElevateCreateProcess의 원인 일 수 있으며이를 피하는 방법은 무엇입니까? 고맙습니다.

답변

1

입니다.이 동작의 원인은 Launcher 프로세스의 이름 일 수 있습니다. Windows는 "* launch * .exe"명명 패턴과 일치하는 모든 프로세스를 ElevateCreateProcess 플래그로 보완합니다. 이 어색한 동작은 windows \ apppatch \ sysmain.sdb shim 데이터베이스에 지정됩니다. 응용 프로그램 호환성 Toolkit을 설치하고 실행하여이를 볼 수 있습니다. "시스템 데이터베이스 (32 비트)/응용 프로그램/자동 실행"에서이 항목을 찾을 수 있습니다. 비활성화는 위험 할 수도 있지만 내 케이스에서는 rightclick -> Disable Disable 항목이 작동하지 않습니다.