2017-10-18 1 views
1

VS2017을 사용하고 있으며 Windows Forms 응용 프로그램을 사용하여 다양한 RDP 설정 파일에 대해 매우 간단한 '실행 프로그램'을 만들었습니다. 이것은 Process.Start를 .rdp 파일에 대한 직접 링크 또는 mstsc.exe에 바로 연결하여 호출합니다.RDP/MSTSC windows form 응용 프로그램에서 시작할 때 highdpi 매니페스트 수정을 무시합니다.

응용 프로그램 (및 RDP 세션)은 표준 PC에서 올바르게 표시되고 작동합니다. 그러나 Surface Books/Pro와 같은 높은 DPI 장치에서 문제가 발생했습니다.

RDP 클라이언트가 올바르게 확장되지 않는 문제는 상당히 잘 알려진 문제이므로 manifest/reg 변경 방법을 사용하여이 문제를 해결했습니다. 이것은 확인 된 작업입니다. .rdp 구성 파일을 두 번 클릭해도 올바르게 작동합니다.

(https://www.blackforce.co.uk/2016/04/18/remote-desktop-rdp-resolution-on-a-surface-book는)

내 자신의 응용 프로그램은 올바른 규모에 올바르게 표시됩니다. 그러나 Process.Start를 사용하여 RDP를 실행하면 RDP 클라이언트가 항상 매니페스트 수정 전에 있던 것처럼 잘못 확장됩니다. 나는 혼자 클라이언트를 열려고 시도했다. 그리고 .rdp 파일과 결과는 동일하다. 내 .rdp 파일을 수동으로 열고 내 응용 프로그램을 통해서가 아니며 클라이언트의 크기가 올바르게 조정됩니다.

누구든지이 내용을 복제하거나이 방법으로 시작할 때 mstsc 매니페스트 파일이 무시되는 이유를 조언 할 수 있습니까? 또한 ProcessStartInfo를 사용하여 UseShellExecute를 설정했지만 여전히 동일한 결과를 얻으려고했습니다.

+1

내 수정 구슬에 의하면 Winforms 앱에 지터 강제 설정이 켜져 있고 32 비트 프로세스로 실행됩니다. 그래서 c : \ windows \ syswow64 \ mstsc.exe를 시작합니다. 당신이 해킹하지 않은 것입니다. PreferExternalManifest 해킹은 불법입니다. 지역화 된 문제에 대한 글로벌 솔루션으로 인해 발생할 수있는 피해와 같이 아무 것도 없습니다. 레지스트리 키의 32 비트보기는 Wow6432Node에 있습니다. 프로젝트> 속성> 빌드로 강제로 지터를 제거하십시오. –

+0

안녕하세요. Hans, 내 문제를 해결 했으므로 답변으로 답글을 남길 수 있습니까? 많은 감사합니다. PreferExternalManifest 해킹에 관해서 - 나는 동의하지만, 좀 더 구체적인 수정을 알지 못한다. 다시 한 번 감사드립니다! Mark –

+0

그 끔찍함을 없애는 방법을 알고 있다면. superuser.com에 질문하십시오. 당신이 그것에 익숙하다면, 그저 답을 직접 게시하십시오. –

답변

0

RDP와 같은 Windows 데스크톱 응용 프로그램은 매니페스트 설정 또는 초기화 중에 API 호출을 통해 DPI 스케일링 모드 ("DPI 인식 모드")를 지정할 수 있습니다. 응용 프로그램은 현재 사용중인 디스플레이의 배율 요소가 변경 될 때마다 다르게 작동합니다. 이 here에 대한 자세한 내용을 볼 수 있습니다.

RDP 프로세스가 DPI 인식 (DPI 인식에 따라)이라는 선언을하기 위해 RDP 프로세스가 매니페스트를 사용하고 있으며 프로세스를 시작할 때이를 추측합니다. 프로세스의 DPI 인식을 변경하려고합니다. 호출 프로세스의 DPI 인식에 대한 가능성이 있습니다.

System Internals Process Explorer를 사용하여 예상대로 실행될 때 RDP 앱의 DPI 인식을 확인한 다음 앱에서 실행될 때 RDP 앱의 DPI 인식과 비교할 수 있습니다. 이 경우 Process.Start에서 시작하려는 프로세스의 DPI 인식을 지정할 수 있는지 여부를 확인하십시오. 시도 할 수있는 또 다른 방법은 WinForms 앱의 DPI 인식을 RDP 앱 (모니터 당)과 동일한 DPI 인식으로 설정하여 도움이되는지 확인하는 것입니다.

또한, 8.1에서 Per-Monitor 지원이 도입됨에 따라 OS> 8.1에서 실행되고 있다고 가정합니다.

관련 문제