山本ワールド
Windowsプログラミング
アルゴリズム Vitual C++ 2008/2013によるWin32/Win64 APIレベルのプログラム 基礎 Vitual C++ 2008/2013によるAPIレベルのプログラム(32/64bit) Wix3でインストーラーを作る Visual C++ 2008 Standard Editonによるフォームアプリケーションのプログラム(32/64bit) Vitual C++ 2008 Standard EditonによるAPIレベルのプログラム(32/64bit) Windows 7対応 Visual C++ 2008 ExpressによるAPIレベルのプログラム Visual C++ 2005 ExpressによるAPIレベルのプログラム Visual C++ Versiosn 5 BORLAND C++ Windowsプログラム全般 Excel VBA その他WindowsとIEのバージョンを表示(Windowsはエディション,ビルド番号表示対応)
概要
Windowsとインターネットエクスプローラーのバージョンを表示します。Visual C++ 2005 ExpressでコンパイルするとWindows 98にも対応します。Windows 9x系はMessageBox API以外はUNICODEに対応していないのでマルチバイトでコンパイルしてください。
Visual C++ 2013でGetVerrsionEx APIを使用するとコンパイルできないので、プラグマで警告を無視するように設定しています。
本プログラムではWindowsはエディション,ビルド番号を表示していますが、メージャーとマイナーバージョンのみ必要であれば、Windowsのバージョンを表示(VerifyVersionInfo版)を参照してください。互換モードで例えばWindows XPにするとGetVersionEx APIはXPとして認識します。
変更履歴
2014.08.09 初版
2014.08.24 GetVersionEx APIの実行結果を表示。Windows 2012がWindows 8と表示されるのを修正。Windows 2003と2003R2を判別できるように修正。Windows 8.1とWindows 2012R2に対応(manifest.xml埋め込み時)
2014.09.03 リンク先の修正
テスト環境
コンパイラ
Visual C++ 2005/2008/2010/2013 Express 32/64bit マルチバイト/UNICODE実行環境
クリックすると実行したときの画面が表示されます。本ソフトの実行状況、マイコンピュータのプロパティ、IEのバージョン表示をプリントスクリーンした状態です。
GetVersionEx API(Windows 8.1,2012R2の実行時はマニフェストファイルを修正)
メンバー | 98SE | 2000 | XP | 2003R2 | Vista | 7 | 2008R2 | 8 | 8.1 | 2012 | 2012R2 |
---|---|---|---|---|---|---|---|---|---|---|---|
dwMajorVersion | 4 | 5 | 5 | 5 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
dwMinorVersion | 10 | 0 | 1 | 2 | 0 | 1 | 1 | 2 | 3 | 2 | 3 |
dwBuildNumber | 67766446 | 2195 | 2600 | 3790 | 6002 | 7601 | 7601 | 9200 | 9600 | 9200 | 9600 |
dwPlatformId | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
szCSDVersion | A | Service Pack 4 | Service Pack 3 | Service Pack 2 | Service Pack 2 | Service Pack 1 | Service Pack 1 | ||||
wProductType | 0 | 1 | 1 | 3 | 1 | 1 | 3 | 1 | 1 | 3 | 3 |
wServicePackMajor | 0 | 4 | 3 | 2 | 2 | 1 | 1 | 0 | 0 | 0 | 0 |
wServicePackMinor | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Windows Server 2012R2 Datacenter 64bit(Virtual Box上の仮想マシーン)
Windows Server 2012 Standard 64bit(Virtual Box上の仮想マシーン)
Windows Server 2008 R2 Datacenter Service Pack 1 64bit(Virtual Box上の仮想マシーン)
Windows 8.1 Enterprise1 64bit
Windows 8 Enterprise1 64bit
Windows 7 Enterprise Service Pack 1 64bit
Windows 7 Enterprise Service Pack 1 32bit(Virtual Box上の仮想マシーン)
Windows VISTA Ulitimate Service Pack 2 32bit
Windows Server 2003R2 Enterprise Service Pack 2(Virtual Box上の仮想マシーン)
Windows XP Professional Service Pack 3 32bit(Virtual Box上の仮想マシーン)
Windows XP Home Editon Service Pack 3 32bit
Windows 2000 Professional Service Pack 4 32bit(Virtual Box上の仮想マシーン)
Windows 98 Second Editon 32bit(Virtual Box上の仮想マシーン)
プログラムソースの概要
manifest.xml
マニフェストファイルです。特にマニフェストファイルを指定しない場合、GetVerrsionEx APIはWindows 8.1で実行してもWindows 8相当以上のバージョンを返しません。互換モードを設定している場合は、その影響も受けます。
マニフェストファイルでWindows 8.1に対応していることを明示するとWindows 8.1,Windows 2012R2を認識できるようになります。
ただし、マニフェストファイルを指定するとWindows 98SEでは実行できなくなります。いまどきWindows 98SEをサポートする必要はないかと思いますが、サービスパックやビルド番号が不要であれば、マニフェストファイルを埋め込まずにWindows 8相当が検出されたら、マニフェストの影響を受けないAPIでWindows 8.1であるか判断するなどの対応が必要です。
osver.cpp
WinMain
ダイアログボックスの表示を行います。DlgProc
WM_INITDIALOG
ダイアログボックスの初期化時に呼び出されます。get_WINDOWS_version関数を呼び出し、OSとIEのバージョンを取得し文字配列osnameに保存します。
各種DLLのバージョン番号を取得し、エディットボックスにOSとIEバージョンをあわせて表示します。
WM_COMMAND
ボタンをクリックしたときに呼び出されます。IDC_BUTTON102
OKボタンをクリックしたときに呼び出されます。EndDialog APIでダイアログボックスを終了させます。IDCANCEL
右上の×ボタンまたは、ESCキーを押したときに呼び出されます。EndDialog APIでダイアログボックスを終了させます。get_WINDOWS_version
OSVERSIONINFO構造体のメンバーdwOSVersionInfoSizeに構造体サイズをセットした後、これを引数としてGetVersionEx APIを呼び出します。OSVERSIONINFOEX構造体のメンバーdwOSVersionInfoSizeに構造体サイズをセットした後、これを引数としてGetVersionEx APIを呼び出します。Windows 9x系はこのAPIにOSVERSIONINFOEXを引数とすると正常に動作しません。
GetVersionEx APIはWindows 8.1では削除予定となりました。Windows 8.1以上でマニフェストファイルを修正せずに実行するとWindows 8相当が返ってきます。マニフェストを修正しない前提では、代わりにIsWindowsVersionOrGreater APIを用い判別する必要があります。
OSVERSIONINFO構造体のメンバーdwMajorVersionで大まかにバージョンを分類します。
OSVERSIONINFO::dwMajorVersion==4
OSVERSIONINFO::dwPlatformId==VER_PLATFORM_WIN32_WINDOWS
Windows 9x系なので、get_WINDOWS_9x関数によりさらに詳細のバージョンを特定します。OSVERSIONINFO::dwPlatformId!=VER_PLATFORM_WIN32_WINDOWS
Windows NT 4.0とみなします。OSVERSIONINFOEX::dwMajorVersion==5
OSVERSIONINFOEX::dwMinorVersion==0
Windows 2000なので、get_WINDOWS_2000関数でさらに詳細情報を取得します。OSVERSIONINFOEX::dwMinorVersion==1
Windows XPなので、get_WINDOWS_XP関数でさらに詳細情報を取得します。OSVERSIONINFOEX::dwMinorVersion==2
OSVERSIONINFOEX::wProductType == VER_NT_WORKSTATION Professional x64 Editionです。OSVERSIONINFOEX::wProductType != VER_NT_WORKSTATION Windows 2003です。get_WINDOWS_2003関数でさらに詳細情報を取得します。
GetSystemMetrics(SM_SERVERR2)の結果により2003R2と無印を区別できます。
OSVERSIONINFOEX::dwMajorVersion==6
Vista以降はGetProductInfo APIが使えるのでこれを使用して詳細情報を取得します。OSVERSIONINFOEX::dwMinorVersion==0
OSVERSIONINFOEX::wProductType== VER_NT_WORKSTATION Vistaです。OSVERSIONINFOEX::wProductType!= VER_NT_WORKSTATION Server 2008です。
OSVERSIONINFOEX::dwMinorVersion==1
OSVERSIONINFOEX::wProductType== VER_NT_WORKSTATION 7です。OSVERSIONINFOEX::wProductType!= VER_NT_WORKSTATION Server 2008R2です。
OSVERSIONINFOEX::dwMinorVersion==2
OSVERSIONINFOEX::wProductType== VER_NT_WORKSTATION 8です。OSVERSIONINFOEX::wProductType!= VER_NT_WORKSTATION Server 2012です。
OSVERSIONINFOEX::dwMinorVersion==3
OSVERSIONINFOEX::wProductType== VER_NT_WORKSTATION 8.1です。OSVERSIONINFOEX::wProductType!= VER_NT_WORKSTATION Server 2012R2です。
get_WINDOWS_9x
OSVERSIONINFO::dwMinorVersion==0
Windows 95です。OSVERSIONINFO::szCSDVersionにAとかBとか文字が入っているときは、OSRバージョンを示します。A:OSR1,B:OSR2,C:OSR2.5
ただし、先頭に空白が入っている場合があるので、読み飛ばします。
OSVERSIONINFO::dwMinorVersion==10
Windows 98です。OSVERSIONINFO::szCSDVersionにAという文字が入っているときは、Second Editonを示します。ただし、先頭に空白が入っている場合があるので、読み飛ばします。
OSVERSIONINFO::dwMinorVersion==90
Windows Meです。get_WINDOWS_2000
OSVERSIONINFOEX::VER_NT_WORKSTATION,OSVERSIONINFOEX::wSuiteMask
上記のメンバー変数によりエディションを特定します。get_WINDOWS_XP
GetSystemMetrics APIによりエディションを特定します。get_WINDOWS_2003
OSVERSIONINFOEX::wSuiteMask
上記のメンバー変数によりエディションを特定します。get_WINDOWS_VISTA_7_8
GetProductInfo APIによりエディションを特定します。このAPIはVista以降でサポートされているため、APIを動的に呼び出しています。
get_file_version
DLLファイルのバージョンを取得します。get_IE_version
レジストリよりIEのバージョンを取得します。osver.h
Visual C++ 2005やVisual C++ 2008等で定義されていないマクロを定義します。EDITION_TABLE vista 変数は、GetProductInfo APIの第3引数で返されるdwReturnedProductTypeの値と対応するエディション名の配列です。
osver.cppのget_WINDOWS_VISTA_7_8関数で使用しています。
ソースコード
osver.cpp
// WindowsとIEのバージョンを表示
// Visual C++ 2005 Expressでコンパイル Windows 98対応(マルチバイトでコンパイルすること)
// Visual C++ 2008 Expressでコンパイル Windows 2000以上に対応
// Visual C++ 2013 Expressでコンパイル Windows XP以上に対応
#include <windows.h>
#include <stdio.h>
#include <winver.h>
#include <commctrl.h>
#include <tchar.h>
#include "osver.h"
#include "resource.h"
#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"version.lib")
// Windowsのバージョンを取得する
TCHAR* get_WINDOWS_version(TCHAR* buf,unsigned sz);
// Windows 9x系のバージョンを取得
TCHAR* get_WINDOWS_9x(OSVERSIONINFO* os);
// Windows 2000のエディションを取得
TCHAR* get_WINDOWS_2000(OSVERSIONINFOEX* os);
// Windows XPのエディションを取得
TCHAR* get_WINDOWS_XP(OSVERSIONINFOEX* os);
// Windows 2003のエディションを取得
TCHAR* get_WINDOWS_2003(OSVERSIONINFOEX* os,TCHAR** r,TCHAR** e);
// Windows Vistaから8までのエディションを取得
TCHAR* get_WINDOWS_VISTA_7_8(OSVERSIONINFOEX* os);
// DLLファイルのバージョンを取得
void get_file_version(TCHAR* path,int ver[4]);
// インターネットエクスプローラーのバージョンを取得
TCHAR* get_IE_version(TCHAR* buf,int sz);
// ダイアログボックスプロシージャー
LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow){
InitCommonControls();
// ダイアログボックスの表示
DialogBox(hCurInst, TEXT("DLG1"), 0, (DLGPROC)DlgProc);
return (int)0;
}
// ダイアログボックスプロシージャー
LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
static HWND hEdit;
TCHAR buf[1024];
TCHAR ie[64];
switch (msg) {
case WM_INITDIALOG:{
hEdit=GetDlgItem(hDlg,IDC_EDIT100);
int sh[4],b[4],ms[4],u[4],win[4];
TCHAR osname[256*256];
TCHAR* os=get_WINDOWS_version(osname,sizeof(osname)/sizeof(TCHAR));
get_file_version(_TEXT("ShDocVw.dll"),sh);
get_file_version(_TEXT("BrowseUI.dll"),b);
get_file_version(_TEXT("MSHTML.dll"),ms);
get_file_version(_TEXT("URLMon.dll"),u);
get_file_version(_TEXT("WinInet.dll"),win);
_stprintf_s(buf,sizeof(buf)/sizeof(TCHAR),_TEXT("%s\r\nIExplore.exe %s\r\n")
_TEXT("ShDocVw.dll %i.%i.%i.%i\r\n")
_TEXT("BrowseUI.dll %i.%i.%i.%i\r\n")
_TEXT("MSHTML.dll %i.%i.%i.%i\r\n")
_TEXT("URLMon.dll %i.%i.%i.%i\r\n")
_TEXT("WinInet.dll %i.%i.%i.%i\r\n"),
osname,
get_IE_version(ie,sizeof(ie)/sizeof(TCHAR)),
sh[0],sh[1],sh[2],sh[3],
b[0],b[1],b[2],b[3],
ms[0],ms[1],ms[2],ms[3],
u[0],u[1],u[2],u[3],
win[0],win[1],win[2],win[3]);
SetWindowText(hEdit , buf);
return TRUE;
}
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:{
EndDialog(hDlg,TRUE);
return TRUE;
}
case IDCANCEL:
EndDialog(hDlg,TRUE);
return TRUE;
default:
return FALSE;
}
default:
return FALSE;
}
return TRUE;
}
void put_osversioninfo(TCHAR* buf,OSVERSIONINFO* o){
if(o->dwOSVersionInfoSize==sizeof(OSVERSIONINFO)){
_stprintf( buf,
_TEXT("GetVersion API\r\n")
_TEXT(" OSVERSIONINFO.dwMajorVersion=%d\r\n")
_TEXT(" OSVERSIONINFO.dwMinorVersion=%d\r\n")
_TEXT(" OSVERSIONINFO.dwBuildNumber=%d\r\n")
_TEXT(" OSVERSIONINFO.dwPlatformId=%d(0x%.8x)\r\n")
_TEXT(" OSVERSIONINFO.szCSDVersion=%s"),
o->dwMajorVersion,
o->dwMinorVersion,
o->dwBuildNumber,
o->dwPlatformId,o->dwPlatformId,
o->szCSDVersion);
}else{
OSVERSIONINFOEX* os=(OSVERSIONINFOEX*)o;
_stprintf( buf,
_TEXT("GetVersionEx API\r\n")
_TEXT(" OSVERSIONINFOEX.dwMajorVersion=%d\r\n")
_TEXT(" OSVERSIONINFOEX.dwMinorVersion=%d\r\n")
_TEXT(" OSVERSIONINFOEX.dwBuildNumber=%d\r\n")
_TEXT(" OSVERSIONINFOEX.dwPlatformId=%d(0x%.8x)\r\n")
_TEXT(" OSVERSIONINFOEX.szCSDVersion=%s\r\n")
_TEXT(" OSVERSIONINFOEX.wProductType=%d(0x%.2x)\r\n")
_TEXT(" OSVERSIONINFOEX.wServicePackMajor=%d\r\n")
_TEXT(" OSVERSIONINFOEX.wServicePackMinor=%d\r\n"),
os->dwMajorVersion,
os->dwMinorVersion,
os->dwBuildNumber,
os->dwPlatformId,o->dwPlatformId,
os->szCSDVersion,
(DWORD)os->wProductType,(DWORD)os->wProductType,
(DWORD)os->wServicePackMajor,
(DWORD)os->wServicePackMinor);
}
}
// Windowsのバージョンを取得する
TCHAR* get_WINDOWS_version(TCHAR* buf,unsigned sz){
TCHAR info[1024];
OSVERSIONINFOEX os;
OSVERSIONINFO o;
OSVERSIONINFO* op=0;
o.dwOSVersionInfoSize=sizeof(o);
GetVersionEx(&o);
buf[0]=_T('\0');
os.dwOSVersionInfoSize=sizeof(os);
if(GetVersionEx((OSVERSIONINFO *)&os)==0){ // OSVERSIONINFOEXをサポートしていない場合
op=&o;
}else
op=(OSVERSIONINFO*)&os;
TCHAR* osname=_TEXT("");
TCHAR* r=_TEXT("");
switch(o.dwMajorVersion){
case 4:{
if(o.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS){
osname=get_WINDOWS_9x(&o);
_stprintf_s(buf,sz,_TEXT("Windows %s\r\n"),osname);
}else{
_stprintf_s(buf,sz,_TEXT("Windows NT 4.0\r\n"));
}
put_osversioninfo(info,op);
_tcscat(buf,info);
break;
}
case 5:{
TCHAR* e=_TEXT("");
switch(os.dwMinorVersion){
case 0:
osname=_TEXT("2000");
e=get_WINDOWS_2000(&os);
break;
case 1:
osname=_TEXT("XP");
e=get_WINDOWS_XP(&os);
break;
case 2:
if(os.wProductType == VER_NT_WORKSTATION){
osname=_TEXT("XP");
e=_TEXT("Professional x64 Edition");
}else{
osname=get_WINDOWS_2003(&os,&r,&e);
}
break;
}
_stprintf_s(buf,sz,_TEXT("Windows %s%s %s %s Build %d\r\n"),osname,r,e,os.szCSDVersion,os.dwBuildNumber);
put_osversioninfo(info,op);
_tcscat(buf,info);
break;
}
case 6:{
TCHAR *e=get_WINDOWS_VISTA_7_8(&os);
switch(os.dwMinorVersion){
case 0:
if(os.wProductType == VER_NT_WORKSTATION)
osname=_TEXT("Vista");
else
osname=_TEXT("Server 2008");
break;
case 1:
if(os.wProductType == VER_NT_WORKSTATION)
osname=_TEXT("7");
else
osname=_TEXT("Server 2008R2");
break;
case 2:
if(os.wProductType == VER_NT_WORKSTATION)
osname=_TEXT("8");
else
osname=_TEXT("Server 2012");
break;
case 3:
if (os.wProductType != VER_NT_WORKSTATION)
osname = _TEXT("Server 2012R2");
else
osname = _TEXT("8.1");
break;
}
_stprintf_s(buf,sz,_TEXT("Windows %s %s %s Build %d\r\n"),osname,e,os.szCSDVersion,os.dwBuildNumber);
put_osversioninfo(info,op);
_tcscat(buf,info);
break;
}
}
return buf;
}
// Windows 9x系のバージョンを取得
TCHAR* get_WINDOWS_9x(OSVERSIONINFO* os){
int c=0;
TCHAR* p=os->szCSDVersion;
while(*p){
if(*p!=_T(' ')){
c=*p;
break;
}
++p;
}
switch(os->dwMinorVersion){
case 0:{
switch(c){
case _T('A'):
return _TEXT("95 OSR1");
case _T('B'):
return _TEXT("95 OSR2");
case _T('C'):
return _TEXT("95 OSR2.5");
default:
return _TEXT("95");
}
}
case 10:
switch(c){
case _T('A'):
return _TEXT("98 Second Edition");
default:
return _TEXT("98");
}
case 90:
return _TEXT("Me");
}
return _TEXT("");
}
// Windows 2000のエディションを取得
TCHAR* get_WINDOWS_2000(OSVERSIONINFOEX* os){
if(os->wProductType == VER_NT_WORKSTATION)
return _TEXT("Professional");
else if(os->wSuiteMask & VER_SUITE_DATACENTER)
return _TEXT("Datacenter");
else if(os->wSuiteMask & VER_SUITE_ENTERPRISE)
return _TEXT("Advanced");
else
return _TEXT("Sever");
}
// Windows XPのエディションを取得
TCHAR* get_WINDOWS_XP(OSVERSIONINFOEX* os){
if(GetSystemMetrics(SM_TABLETPC))
return _TEXT("Tablet PC Edition");
else if(GetSystemMetrics(SM_MEDIACENTER))
return _TEXT("Media Center Edition");
else if(GetSystemMetrics(SM_STARTER))
return _TEXT("Starter Edition");
else if(os->wSuiteMask & VER_SUITE_PERSONAL)
return _TEXT("Home Edition");
else if(os->wSuiteMask & (VER_SUITE_EMBEDDEDNT | VER_SUITE_EMBEDDED_RESTRICTED))
return _TEXT("Embedded");
else
return _TEXT("Professional");
}
// Windows 2003のエディションを取得
TCHAR* get_WINDOWS_2003(OSVERSIONINFOEX* os,TCHAR** r,TCHAR** e){
TCHAR* osname=TEXT("");
if(os->wSuiteMask & VER_SUITE_COMPUTE_SERVER)
return _TEXT("Computer Cluster Server 2003");
else if(os->wSuiteMask & VER_SUITE_WH_SERVER)
return _TEXT("Home Server");
if(os->wSuiteMask & (VER_SUITE_SMALLBUSINESS | VER_SUITE_SMALLBUSINESS_RESTRICTED))
osname=_TEXT("Small Business Server 2003");
else if(os->wSuiteMask & VER_SUITE_STORAGE_SERVER)
osname=_TEXT("Storage Server 2003");
else
osname=_TEXT("Server 2003");
*e=_TEXT("");
if(os->wSuiteMask & VER_SUITE_DATACENTER)
*e=_TEXT("Datacenter");
else if(os->wSuiteMask & VER_SUITE_ENTERPRISE)
*e=_TEXT("Enterprise");
else if(os->wSuiteMask & VER_SUITE_BLADE)
*e=_TEXT("Web");
else
*e=_TEXT("Standard");
if( GetSystemMetrics(SM_SERVERR2)) // 2003R2
*r=_TEXT("R2");
else // 2003
*r=_TEXT("");
return osname;
}
// Windows Vistaから8までのエディションを取得
TCHAR* get_WINDOWS_VISTA_7_8(OSVERSIONINFOEX* os){
// GetProductInfoはVista以降のOSでしかサポートされていないのでXP等で実行するとエントリーポイントが見つからないというエラーが出るので動的に呼び出す。
typedef BOOL (WINAPI *pGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD);
pGetProductInfo p = (pGetProductInfo)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetProductInfo");
DWORD dwReturnedProductType;
p( os->dwMajorVersion , os->dwMinorVersion , os->wServicePackMajor , os->wServicePackMinor , &dwReturnedProductType);
// エディションを検索する
TCHAR* e=0;
for(int n=0;vista[n].name;n++){
if(dwReturnedProductType==vista[n].dw){
e=vista[n].name;
break;
}
}
return e;
}
// DLLファイルのバージョンを取得
void get_file_version(TCHAR* path,int ver[4]){
VS_FIXEDFILEINFO* v;
DWORD dwZero = 0;
UINT len;
DWORD sz=GetFileVersionInfoSize(path,&dwZero);
TCHAR* buf=new TCHAR[sz];
GetFileVersionInfo(path,dwZero,sz,buf);
if(VerQueryValue(buf,TEXT("\\"),(LPVOID*)&v,&len)){
ver[0]=int(HIWORD(v->dwFileVersionMS));
ver[1]=int(LOWORD(v->dwFileVersionMS));
ver[2]=int(HIWORD(v->dwFileVersionLS));
ver[3]=int(LOWORD(v->dwFileVersionLS));
}
delete buf;
}
// インターネットエクスプローラーのバージョンを取得
TCHAR* get_IE_version(TCHAR* buf,int sz){
DWORD dwType;
ULONG nSize;
HKEY hKey;
dwType = REG_SZ;
nSize = 256;
hKey = NULL;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE
,_TEXT("Software\\Microsoft\\Internet Explorer")
,0,KEY_READ,&hKey)==ERROR_SUCCESS){
if(RegQueryValueEx(hKey,_TEXT("SvcVersion"),NULL,&dwType,(LPBYTE)buf,&nSize)==ERROR_SUCCESS){ // IE10以上で定義されている
RegCloseKey(hKey);
}else{
if(RegQueryValueEx(hKey,_TEXT("Version"),NULL,&dwType,(LPBYTE)buf,&nSize)==ERROR_SUCCESS){
RegCloseKey(hKey);
}
}
return buf;
}else
return 0;
}
osver.h
resource.h
#ifndef PRODUCT_BUSINESS
#define PRODUCT_BUSINESS 0x00000006 //Business
#endif
#ifndef PRODUCT_BUSINESS_N
#define PRODUCT_BUSINESS_N 0x00000010 //Business N
#endif
#ifndef PRODUCT_CLUSTER_SERVER
#define PRODUCT_CLUSTER_SERVER 0x00000012 //HPC Edition
#endif
#ifndef PRODUCT_CLUSTER_SERVER_V
#define PRODUCT_CLUSTER_SERVER_V 0x00000040 //Server Hyper Core V
#endif
#ifndef PRODUCT_CORE
#define PRODUCT_CORE 0x00000065 //Windows 8
#endif
#ifndef PRODUCT_CORE_COUNTRYSPECIFIC
#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063 //Windows 8 China
#endif
#ifndef PRODUCT_CORE_N
#define PRODUCT_CORE_N 0x00000062 //Windows 8 N
#endif
#ifndef PRODUCT_CORE_SINGLELANGUAGE
#define PRODUCT_CORE_SINGLELANGUAGE 0x00000064 //Windows 8 Single Language
#endif
#ifndef PRODUCT_DATACENTER_EVALUATION_SERVER
#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050 //Server Datacenter (evaluation installation)
#endif
#ifndef PRODUCT_DATACENTER_SERVER
#define PRODUCT_DATACENTER_SERVER 0x00000008 //Server Datacenter (full installation)
#endif
#ifndef PRODUCT_DATACENTER_SERVER_CORE
#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C //Server Datacenter (core installation)
#endif
#ifndef PRODUCT_DATACENTER_SERVER_CORE_V
#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027 //Server Datacenter without Hyper-V (core installation)
#endif
#ifndef PRODUCT_DATACENTER_SERVER_V
#define PRODUCT_DATACENTER_SERVER_V 0x00000025 //Server Datacenter without Hyper-V (full installation)
#endif
#ifndef PRODUCT_ENTERPRISE
#define PRODUCT_ENTERPRISE 0x00000004 //Enterprise
#endif
#ifndef PRODUCT_ENTERPRISE_E
#define PRODUCT_ENTERPRISE_E 0x00000046 //Not supported
#endif
#ifndef PRODUCT_ENTERPRISE_EVALUATION
#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048 //Server Enterprise (evaluation installation)
#endif
#ifndef PRODUCT_ENTERPRISE_N
#define PRODUCT_ENTERPRISE_N 0x0000001B //Enterprise N
#endif
#ifndef PRODUCT_ENTERPRISE_N_EVALUATION
#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054 //Enterprise N (evaluation installation)
#endif
#ifndef PRODUCT_ENTERPRISE_SERVER
#define PRODUCT_ENTERPRISE_SERVER 0x0000000A //Server Enterprise (full installation)
#endif
#ifndef PRODUCT_ENTERPRISE_SERVER_CORE
#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E //Server Enterprise (core installation)
#endif
#ifndef PRODUCT_ENTERPRISE_SERVER_CORE_V
#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029 //Server Enterprise without Hyper-V (core installation)
#endif
#ifndef PRODUCT_ENTERPRISE_SERVER_IA64
#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F //Server Enterprise for Itanium-based Systems
#endif
#ifndef PRODUCT_ENTERPRISE_SERVER_V
#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026 //Server Enterprise without Hyper-V (full installation)
#endif
#ifndef PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C //Windows Essential Server Solution Additional
#endif
#ifndef PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E //Windows Essential Server Solution Additional SVC
#endif
#ifndef PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B //Windows Essential Server Solution Management
#endif
#ifndef PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D //Windows Essential Server Solution Management SVC
#endif
#ifndef PRODUCT_HOME_BASIC
#define PRODUCT_HOME_BASIC 0x00000002 //Home Basic
#endif
#ifndef PRODUCT_HOME_BASIC_E
#define PRODUCT_HOME_BASIC_E 0x00000043 //Not supported
#endif
#ifndef PRODUCT_HOME_BASIC_N
#define PRODUCT_HOME_BASIC_N 0x00000005 //Home Basic N
#endif
#ifndef PRODUCT_HOME_PREMIUM
#define PRODUCT_HOME_PREMIUM 0x00000003 //Home Premium
#endif
#ifndef PRODUCT_HOME_PREMIUM_E
#define PRODUCT_HOME_PREMIUM_E 0x00000044 //Not supported
#endif
#ifndef PRODUCT_HOME_PREMIUM_N
#define PRODUCT_HOME_PREMIUM_N 0x0000001A //Home Premium N
#endif
#ifndef PRODUCT_HOME_PREMIUM_SERVER
#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022 //Windows Home Server 2011
#endif
#ifndef PRODUCT_HOME_SERVER
#define PRODUCT_HOME_SERVER 0x00000013 //Windows Storage Server 2008 R2 Essentials
#endif
#ifndef PRODUCT_HYPERV
#define PRODUCT_HYPERV 0x0000002A //Microsoft Hyper-V Server
#endif
#ifndef PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E //Windows Essential Business Server Management Server
#endif
#ifndef PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020 //Windows Essential Business Server Messaging Server
#endif
#ifndef PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F //Windows Essential Business Server Security Server
#endif
#ifndef PRODUCT_MULTIPOINT_PREMIUM_SERVER
#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D //Windows MultiPoint Server Premium (full installation)
#endif
#ifndef PRODUCT_MULTIPOINT_STANDARD_SERVER
#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C //Windows MultiPoint Server Standard (full installation)
#endif
#ifndef PRODUCT_PROFESSIONAL
#define PRODUCT_PROFESSIONAL 0x00000030 //Professional
#endif
#ifndef PRODUCT_PROFESSIONAL_E
#define PRODUCT_PROFESSIONAL_E 0x00000045 //Not supported
#endif
#ifndef PRODUCT_PROFESSIONAL_N
#define PRODUCT_PROFESSIONAL_N 0x00000031 //Professional N
#endif
#ifndef PRODUCT_PROFESSIONAL_WMC
#define PRODUCT_PROFESSIONAL_WMC 0x00000067 //Professional with Media Center
#endif
#ifndef PRODUCT_SB_SOLUTION_SERVER
#define PRODUCT_SB_SOLUTION_SERVER 0x00000032 //Windows Small Business Server 2011 Essentials
#endif
#ifndef PRODUCT_SB_SOLUTION_SERVER_EM
#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036 //Server For SB Solutions EM
#endif
#ifndef PRODUCT_SERVER_FOR_SB_SOLUTIONS
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033 //Server For SB Solutions
#endif
#ifndef PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037 //Server For SB Solutions EM
#endif
#ifndef PRODUCT_SERVER_FOR_SMALLBUSINESS
#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018 //Windows Server 2008 for Windows Essential Server Solutions
#endif
#ifndef PRODUCT_SERVER_FOR_SMALLBUSINESS_V
#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023 //Windows Server 2008 without Hyper-V for Windows Essential Server Solutions
#endif
#ifndef PRODUCT_SERVER_FOUNDATION
#define PRODUCT_SERVER_FOUNDATION 0x00000021 //Server Foundation
#endif
#ifndef PRODUCT_SMALLBUSINESS_SERVER
#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 //Windows Small Business Server
#endif
#ifndef PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019 //Small Business Server Premium
#endif
#ifndef PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F //Small Business Server Premium (core installation)
#endif
#ifndef PRODUCT_SOLUTION_EMBEDDEDSERVER
#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038 //Windows MultiPoint Server
#endif
#ifndef PRODUCT_STANDARD_EVALUATION_SERVER
#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F //Server Standard (evaluation installation)
#endif
#ifndef PRODUCT_STANDARD_SERVER
#define PRODUCT_STANDARD_SERVER 0x00000007 //Server Standard
#endif
#ifndef PRODUCT_STANDARD_SERVER_CORE
#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D //Server Standard (core installation)
#endif
#ifndef PRODUCT_STANDARD_SERVER_CORE_V
#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028 //Server Standard without Hyper-V (core installation)
#endif
#ifndef PRODUCT_STANDARD_SERVER_SOLUTIONS
#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034 //Server Solutions Premium
#endif
#ifndef PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE
#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035 //Server Solutions Premium (core installation)
#endif
#ifndef PRODUCT_STANDARD_SERVER_V
#define PRODUCT_STANDARD_SERVER_V 0x00000024 //Server Standard without Hyper-V
#endif
#ifndef PRODUCT_STARTER
#define PRODUCT_STARTER 0x0000000B //Starter
#endif
#ifndef PRODUCT_STARTER_E
#define PRODUCT_STARTER_E 0x00000042 //Not supported
#endif
#ifndef PRODUCT_STARTER_N
#define PRODUCT_STARTER_N 0x0000002F //Starter N
#endif
#ifndef PRODUCT_STORAGE_ENTERPRISE_SERVER
#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017 //Storage Server Enterprise
#endif
#ifndef PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE
#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E //Storage Server Enterprise (core installation)
#endif
#ifndef PRODUCT_STORAGE_EXPRESS_SERVER
#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014 //Storage Server Express
#endif
#ifndef PRODUCT_STORAGE_EXPRESS_SERVER_CORE
#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B //Storage Server Express (core installation)
#endif
#ifndef PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER
#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060 //Storage Server Standard (evaluation installation)
#endif
#ifndef PRODUCT_STORAGE_STANDARD_SERVER
#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015 //Storage Server Standard
#endif
#ifndef PRODUCT_STORAGE_STANDARD_SERVER_CORE
#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C //Storage Server Standard (core installation)
#endif
#ifndef PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER
#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F //Storage Server Workgroup (evaluation installation)
#endif
#ifndef PRODUCT_STORAGE_WORKGROUP_SERVER
#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016 //Storage Server Workgroup
#endif
#ifndef PRODUCT_STORAGE_WORKGROUP_SERVER_CORE
#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D //Storage Server Workgroup (core installation)
#endif
#ifndef PRODUCT_ULTIMATE
#define PRODUCT_ULTIMATE 0x00000001 //Ultimate
#endif
#ifndef PRODUCT_ULTIMATE_E
#define PRODUCT_ULTIMATE_E 0x00000047 //Not supported
#endif
#ifndef PRODUCT_ULTIMATE_N
#define PRODUCT_ULTIMATE_N 0x0000001C //Ultimate N
#endif
#ifndef PRODUCT_UNDEFINED
#define PRODUCT_UNDEFINED 0x00000000 //An unknown product
#endif
#ifndef PRODUCT_WEB_SERVER
#define PRODUCT_WEB_SERVER 0x00000011 //Web Server (full installation)
#endif
#ifndef PRODUCT_WEB_SERVER_CORE
#define PRODUCT_WEB_SERVER_CORE 0x0000001D //Web Server (core installation)
#endif
#ifndef VER_SUITE_WH_SERVER
#define VER_SUITE_WH_SERVER 0x00008000
#endif
#ifndef SM_TABLEPC
#define SM_TABLETPC 86
#endif
#ifndef SM_MEDIACENTER
#define SM_MEDIACENTER 87
#endif
#ifndef SM_STARTER
#define SM_STARTER 88
#endif
#ifndef SM_SERVERR2
#define SM_SERVERR2 89
#endif
struct EDITION_TABLE{
DWORD dw;
TCHAR* name;
};
EDITION_TABLE vista[]={
{ PRODUCT_BUSINESS , _TEXT("Business" ) },
{ PRODUCT_BUSINESS_N , _TEXT("Business N" ) },
{ PRODUCT_CLUSTER_SERVER , _TEXT("HPC Edition" ) },
{ PRODUCT_CLUSTER_SERVER_V , _TEXT("Server Hyper Core V" ) },
{ PRODUCT_CORE , _TEXT("Windows 8" ) },
{ PRODUCT_CORE_N , _TEXT("Windows 8 N" ) },
{ PRODUCT_CORE_COUNTRYSPECIFIC , _TEXT("Windows 8 China" ) },
{ PRODUCT_CORE_SINGLELANGUAGE , _TEXT("Windows 8 Single Language" ) },
{ PRODUCT_DATACENTER_EVALUATION_SERVER , _TEXT("Server Datacenter (evaluation installation)" ) },
{ PRODUCT_DATACENTER_SERVER , _TEXT("Server Datacenter (full installation)" ) },
{ PRODUCT_DATACENTER_SERVER_CORE , _TEXT("Server Datacenter (core installation)" ) },
{ PRODUCT_DATACENTER_SERVER_CORE_V , _TEXT("Server Datacenter without Hyper-V (core installation)" ) },
{ PRODUCT_DATACENTER_SERVER_V , _TEXT("Server Datacenter without Hyper-V (full installation)" ) },
{ PRODUCT_ENTERPRISE , _TEXT("Enterprise" ) },
{ PRODUCT_ENTERPRISE_E , _TEXT("Not supported" ) },
{ PRODUCT_ENTERPRISE_N_EVALUATION , _TEXT("Enterprise N (evaluation installation)" ) },
{ PRODUCT_ENTERPRISE_N , _TEXT("Enterprise N" ) },
{ PRODUCT_ENTERPRISE_EVALUATION , _TEXT("Server Enterprise (evaluation installation)" ) },
{ PRODUCT_ENTERPRISE_SERVER , _TEXT("Server Enterprise (full installation)" ) },
{ PRODUCT_ENTERPRISE_SERVER_CORE , _TEXT("Server Enterprise (core installation)" ) },
{ PRODUCT_ENTERPRISE_SERVER_CORE_V , _TEXT("Server Enterprise without Hyper-V (core installation)" ) },
{ PRODUCT_ENTERPRISE_SERVER_IA64 , _TEXT("Server Enterprise for Itanium-based Systems" ) },
{ PRODUCT_ENTERPRISE_SERVER_V , _TEXT("Server Enterprise without Hyper-V (full installation)" ) },
{ PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT , _TEXT("Windows Essential Server Solution Management" ) },
{ PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL , _TEXT("Windows Essential Server Solution Additional" ) },
{ PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC , _TEXT("Windows Essential Server Solution Management SVC" ) },
{ PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC , _TEXT("Windows Essential Server Solution Additional SVC" ) },
{ PRODUCT_HOME_BASIC , _TEXT("Home Basic" ) },
{ PRODUCT_HOME_BASIC_E , _TEXT("Not supported" ) },
{ PRODUCT_HOME_BASIC_N , _TEXT("Home Basic N" ) },
{ PRODUCT_HOME_PREMIUM , _TEXT("Home Premium" ) },
{ PRODUCT_HOME_PREMIUM_E , _TEXT("Not supported" ) },
{ PRODUCT_HOME_PREMIUM_N , _TEXT("Home Premium N" ) },
{ PRODUCT_HOME_PREMIUM_SERVER , _TEXT("Windows Home Server 2011" ) },
{ PRODUCT_HOME_SERVER , _TEXT("Windows Storage Server 2008 R2 Essentials" ) },
{ PRODUCT_HYPERV , _TEXT("Microsoft Hyper-V Server" ) },
{ PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT , _TEXT("Windows Essential Business Server Management Server" ) },
{ PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING , _TEXT("Windows Essential Business Server Messaging Server" ) },
{ PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY , _TEXT("Windows Essential Business Server Security Server" ) },
{ PRODUCT_MULTIPOINT_STANDARD_SERVER , _TEXT("Windows MultiPoint Server Standard (full installation)" ) },
{ PRODUCT_MULTIPOINT_PREMIUM_SERVER , _TEXT("Windows MultiPoint Server Premium (full installation)" ) },
{ PRODUCT_PROFESSIONAL , _TEXT("Professional" ) },
{ PRODUCT_PROFESSIONAL_E , _TEXT("Not supported" ) },
{ PRODUCT_PROFESSIONAL_N , _TEXT("Professional N" ) },
{ PRODUCT_PROFESSIONAL_WMC , _TEXT("Professional with Media Center" ) },
{ PRODUCT_SB_SOLUTION_SERVER_EM , _TEXT("Server For SB Solutions EM" ) },
{ PRODUCT_SERVER_FOR_SB_SOLUTIONS , _TEXT("Server For SB Solutions" ) },
{ PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM , _TEXT("Server For SB Solutions EM" ) },
{ PRODUCT_SERVER_FOR_SMALLBUSINESS , _TEXT("Windows Server 2008 for Windows Essential Server Solutions" ) },
{ PRODUCT_SERVER_FOR_SMALLBUSINESS_V , _TEXT("Windows Server 2008 without Hyper-V for Windows Essential Server Solutions" ) },
{ PRODUCT_SERVER_FOUNDATION , _TEXT("Server Foundation" ) },
{ PRODUCT_SB_SOLUTION_SERVER , _TEXT("Windows Small Business Server 2011 Essentials" ) },
{ PRODUCT_SMALLBUSINESS_SERVER , _TEXT("Windows Small Business Server" ) },
{ PRODUCT_SMALLBUSINESS_SERVER_PREMIUM , _TEXT("Small Business Server Premium" ) },
{ PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE , _TEXT("Small Business Server Premium (core installation)" ) },
{ PRODUCT_SOLUTION_EMBEDDEDSERVER , _TEXT("Windows MultiPoint Server" ) },
{ PRODUCT_STANDARD_EVALUATION_SERVER , _TEXT("Server Standard (evaluation installation)" ) },
{ PRODUCT_STANDARD_SERVER , _TEXT("Server Standard" ) },
{ PRODUCT_STANDARD_SERVER_CORE , _TEXT("Server Standard (core installation)" ) },
{ PRODUCT_STANDARD_SERVER_V , _TEXT("Server Standard without Hyper-V" ) },
{ PRODUCT_STANDARD_SERVER_CORE_V , _TEXT("Server Standard without Hyper-V (core installation)" ) },
{ PRODUCT_STANDARD_SERVER_SOLUTIONS , _TEXT("Server Solutions Premium" ) },
{ PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE , _TEXT("Server Solutions Premium (core installation)" ) },
{ PRODUCT_STARTER , _TEXT("Starter" ) },
{ PRODUCT_STARTER_E , _TEXT("Not supported" ) },
{ PRODUCT_STARTER_N , _TEXT("Starter N" ) },
{ PRODUCT_STORAGE_ENTERPRISE_SERVER , _TEXT("Storage Server Enterprise" ) },
{ PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE , _TEXT("Storage Server Enterprise (core installation)" ) },
{ PRODUCT_STORAGE_EXPRESS_SERVER , _TEXT("Storage Server Express" ) },
{ PRODUCT_STORAGE_EXPRESS_SERVER_CORE , _TEXT("Storage Server Express (core installation)" ) },
{ PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER , _TEXT("Storage Server Standard (evaluation installation)" ) },
{ PRODUCT_STORAGE_STANDARD_SERVER , _TEXT("Storage Server Standard" ) },
{ PRODUCT_STORAGE_STANDARD_SERVER_CORE , _TEXT("Storage Server Standard (core installation)" ) },
{ PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER , _TEXT("Storage Server Workgroup (evaluation installation)" ) },
{ PRODUCT_STORAGE_WORKGROUP_SERVER , _TEXT("Storage Server Workgroup" ) },
{ PRODUCT_STORAGE_WORKGROUP_SERVER_CORE , _TEXT("Storage Server Workgroup (core installation)" ) },
{ PRODUCT_UNDEFINED , _TEXT("An unknown product" ) },
{ PRODUCT_ULTIMATE , _TEXT("Ultimate" ) },
{ PRODUCT_ULTIMATE_E , _TEXT("Not supported" ) },
{ PRODUCT_ULTIMATE_N , _TEXT("Ultimate N" ) },
{ PRODUCT_WEB_SERVER , _TEXT("Web Server (full installation)" ) },
{ PRODUCT_WEB_SERVER_CORE , _TEXT("Web Server (core installation)" ) },
{ -1 , 0 }};
#if 1600<=_MSC_VER // Visual C++ 2010以上
#pragma warning(disable : 4996) // GetVersionExが古い形式として宣言されましたを回避
#include <versionHelpers.h>
#endif
resource.h
#define IDC_EDIT100 100
#define IDC_BUTTON102 102
resource.rc
#include <windows.h>
#include "resource.h"
DLG1 DIALOG DISCARDABLE 0, 0, 300, 200
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP| WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT
CAPTION "OSVersion"
FONT 9, "MS 明朝"
{
// CONTROL "バージョン", -11, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 7, 7, 54, 12
CONTROL "", IDC_EDIT100, "EDIT", WS_CHILD | WS_DLGFRAME | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL
| ES_AUTOHSCROLL | ES_AUTOVSCROLL
| ES_MULTILINE | ES_READONLY, 7, 7, 286,161
CONTROL "OK(&O)", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 123, 175, 54, 18
}
manifest.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
</application>
</compatibility>
</assembly>