2016-12-29 3 views
1

지정된 드라이브에 제품을 찾으십시오 (예 : 윈도우 7 프로) 드라이브 D에 : D:\Windows\System32\license.rtf윈도우 버전은 내가 어떤 OS 버전을 찾으려면

을 통해 파고없이 저를하게됩니다 System.Management 네임 스페이스 내에서 클래스가 있는가 지정된 로컬 드라이브 문자에서 OS 버전을 찾으십니까?

+4

컴퓨터의 OS가 문제의 드라이브에서 실행되고 있지 않다면 간단한 방법이 아닙니다. Windows는 자신을 인식하고 있습니다. 라이센스 파일과 같은 지표를 찾아야합니다. 유스 케이스 란 무엇입니까? 드라이브에 OS를 설치하고 실행하지 않는 이유는 무엇입니까? –

+2

해당 드라이브의 로컬 컴퓨터 레지스트리 하이브를 C#으로로드 한 다음 레지스트리의 마커를 확인할 수 있습니다. – john

+0

license.rtf 파일에 유용한 정보가 보이지 않습니까? Windows 폴더 아래에 바이너리를 가져 와서 버전 (예 :'\ ​​Windows \ explorer.exe')을 얻은 다음 버전 매핑 -> https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions – npocmaka

답변

1
//This will help you detect the version of the OS for NT based system, if ntoskrnl.exe doesnt exist its ME/95/98 
    var DriveLetter = "D"; //D drive. 
    var pathTontoskrnl = string.Format("{0}:\\{1}", DriveLetter, "\\Windows\System32\ntoskrnl.exe"); 
    if (!File.Exists(pathTontoskrnl)) 
    { 
     Console.WriteLine("Windows ME/95/98"); 
    } 
    var versionInfo = FileVersionInfo.GetVersionInfo(pathTontoskrnl); 
    string version = versionInfo.ProductVersion; 
    if (version.StartsWith("5.1")) 
    { 
     Console.WriteLine("XP"); 
    } 
    //4.x: NT 4.x 
    //5.0: Win2k 
    //5.1: WinXP 
    //5.2: Win2003 or XP-x64 
    //6.0: WinVista 
    //6.1: Win7 
    //6.2; Win8 
    //6.3: Win8.1 
    //6.4: Win10 ??? (not sure) 
+0

이 방법은 효과가 있지만 불행히도 Windows 7 pro VS Windows 7 Home Premium과 같은 OS 버전의 차이점을 확인하는 데는 버전 번호를 사용할 수 없습니다. 다른 버전을 식별 할 수있는 다른 방법이 있습니까? – Simon

+0

Windows가 "* :/Windows /"가 아닌 디렉토리에 설치되는 경우에도 실패합니다. –

+0

올바른 이유는 pathTontoskrnl이 Windows의 설치 디렉토리를 전달하려는 경우에 기반하여 구성 할 수있는 이유입니다. –