원문 URL : http://support.microsoft.com/kb/307393/ko
운영 체제(OS) 정보를 얻기 위해 제공되는 OSVersion 속성은 서비스 팩 정보를 멤버를 포함하지 않습니다. 어떤 서비스 팩이 설치되어 있는지 확인하려면 GetVersionEx API 함수를 직접 호출해야 합니다. 일반적으로 이 연습 방지하려면 좋습니다; .NET Framework 기본 API 집합 더욱 일관성 및 사용하기 쉬운) 액세스를 제공하는 것보다 방식으로 개별 API 함수를 호출하여.
API 함수를 직접 호출할 때 .NET Framework의 Interop 계층을 통해 이렇게 할 수 있습니다. 이 문서의 예제 코드에서는 서비스 팩 수준을 반환하는 GetServicePack, 메서드를 제공합니다.
참고: 고정 길이 문자열, szCSDVersion, OSVERSIONINFO 구조체를 포함합니다. 고정 길이 문자열은 더 이상 지원되지 않으므로 이 멤버에 대한 마샬링 정보를 제공해야 합니다. ([NULL]로 표시된) 특성을 사용하여 이를 멤버 이름 앞에.
운영 체제(OS) 정보를 얻기 위해 제공되는 OSVersion 속성은 서비스 팩 정보를 멤버를 포함하지 않습니다. 어떤 서비스 팩이 설치되어 있는지 확인하려면 GetVersionEx API 함수를 직접 호출해야 합니다. 일반적으로 이 연습 방지하려면 좋습니다; .NET Framework 기본 API 집합 더욱 일관성 및 사용하기 쉬운) 액세스를 제공하는 것보다 방식으로 개별 API 함수를 호출하여.
API 함수를 직접 호출할 때 .NET Framework의 Interop 계층을 통해 이렇게 할 수 있습니다. 이 문서의 예제 코드에서는 서비스 팩 수준을 반환하는 GetServicePack, 메서드를 제공합니다.
참고: 고정 길이 문자열, szCSDVersion, OSVERSIONINFO 구조체를 포함합니다. 고정 길이 문자열은 더 이상 지원되지 않으므로 이 멤버에 대한 마샬링 정보를 제공해야 합니다. ([NULL]로 표시된) 특성을 사용하여 이를 멤버 이름 앞에.
- 새 .NET 관리되는 C++ 응용 프로그램을 엽니다.
참고새 프로젝트 대화 상자의 Visual C++ 프로젝트프로젝트 형식 누른 다음 Managed C++ 응용 프로그램 Visual Studio .NET 2002, 콘솔 응용 프로그램 (.NET) Visual Studio .NET 2003 또는 CLR 콘솔 응용 프로그램템플릿 에서 Visual Studio 2005에 대한. - 코드 창을 열고 Project Name.cpp, 다음 코드를 모두 삭제합니다.
- 다음 예제 코드를 붙여:
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
using namespace System::Runtime::InteropServices;
String *GetServicePack(void);
[StructLayout(StructLayoutKind::Sequential)]
__value struct OSVERSIONINFO
{
public:
unsigned long dwOSVersionInfoSize;
unsigned long dwMajorVersion;
unsigned long dwMinorVersion;
unsigned long dwBuildNumber;
unsigned long dwPlatformId;
[MarshalAs(UnmanagedType::ByValTStr, SizeConst=128)]
String* szCSDVersion;
};
[DllImport("kernel32.dll", EntryPoint="GetVersionEx", SetLastError=true,
CallingConvention=CallingConvention::StdCall)]
extern long GetVersionEx ( [In, Out] OSVERSIONINFO* povi );
// This is the entry point for this application.
#ifdef _UNICODE
int wmain(void)
#else
int main(void)
#endif
{
Console::WriteLine(GetServicePack());
return 0;
}
String *GetServicePack(void)
{
OSVERSIONINFO ovi;
ovi.dwOSVersionInfoSize = Marshal::SizeOf ( __typeof(OSVERSIONINFO) );
if ( GetVersionEx ( &ovi ) == 0 )
{
return (S"Call to GetVersionEx() failed.");
}
if (ovi.szCSDVersion==(S""))
return (S"No Service Pack Installed");
else
return (ovi.szCSDVersion);
}
- 빌드 및 프로젝트를 실행하려면 Ctrl + F5를 누릅니다. 서비스 팩 정보가 콘솔 창에 나타납니다.
'Windows' 카테고리의 다른 글
Window 처리 배치 파일 수행하기 (0) | 2009.11.18 |
---|---|
[Windows] VC++ 버전별 배포방법과 재배포패키지(Redistributable Package) (2) | 2009.11.05 |
[Windows] Visual C# .NET을 사용하여 Windows 버전 확인 (0) | 2009.11.05 |
[Windows] Internet Explorer 버젼 확인법 (0) | 2009.11.05 |
[Windows] 윈도우 종료 시키기 (0) | 2009.04.14 |