2014-11-05 2 views
0

Windows XP에서 실행되는 .Net에서 버그가 발견되었습니다. 문자열 값이 Screen.PrimaryScreen.DeviceName 또는 Screen.AllScreens[]이면 끝에 여분의 문자가 포함됩니다 (메모리 버퍼의 null 및 가비지). 문제는 Windows 7에 존재하지 않습니다. 문제는 -이 문제를 해결하는 Windows Update (KB)가 있습니까? Screen.PrimaryScreen.DeviceName의 문자가 잘못되었습니다.

이 (XP에서) 시도 :

Text = string.Format("{0}: {1}", 
     Screen.PrimaryScreen.DeviceName.Length, 
     Screen.PrimaryScreen.DeviceName); 

보통 결과는 다음과 같습니다 31: \\.\DISPLAY1. 올바른 길이는 31 대신 12입니다. Display1 다음에 \0이 나오므로 해당 문자열은 정상적으로 보입니다. 그러나 문자열 비교의 경우 틀린 것입니다.

답변

0

이것은 Windows 업데이트로 수정되지 않은 .Net/XP의 버그입니다. 내 솔루션은 다음과 같습니다.

string dev = Screen.PrimaryScreen.DeviceName; 
int eos = dev.IndexOf('\0'); 
if (eos != -1) 
    dev = dev.Substring(0, eos); 
관련 문제