如何判斷作業系統 |
答題得分者是:dllee
|
eil
一般會員 發表:3 回覆:1 積分:0 註冊:2003-08-29 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
這個問題已經問過很多次囉... 建議您下載離線閱讀包
http://delphi.ktop.com.tw/ktoppack/index.html
善用其內建的搜尋功能,保證受用無窮。 主要可以使用 GetVersionEx 這個 API 來判斷作業系統。
以下幾篇是找到的文章,請參考。 ■ 如何判斷電腦執行的Windows版本?
http://delphi.ktop.com.tw/link.asp?topic_id=18235 ■ 如何判斷電腦執行的Windows版本?
http://delphi.ktop.com.tw/link.asp?topic_id=24977 ■ 如何測知目前使用OS名稱
http://delphi.ktop.com.tw/link.asp?topic_id=37142 ■ 取得系統的資訊...
http://delphi.ktop.com.tw/link.asp?topic_id=23574 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/09/26 19:06:28
------
http://www.ViewMove.com |
keny
一般會員 發表:1 回覆:11 積分:2 註冊:2006-08-31 發送簡訊給我 |
|
yorkland
高階會員 發表:2 回覆:138 積分:108 註冊:2004-12-17 發送簡訊給我 |
以下程式段提供你參考, 藍色字樣是系統變數。
Result:=osUnknow; if (Win32Platform=1) then begin if (Win32MinorVersion=0) then begin Result:=osWin95; end else begin Result:=osWin98; end; end else if (Win32Platform=2) then begin if (Win32MajorVersion=4) then begin Result:=osWinNT end else if (Win32MajorVersion=5) then begin if (Win32MinorVersion=0) then begin Result:=osWin2K; end else if (Win32MinorVersion=1) begin Result:=osWinXP; end else begin Result:=osVista; end; end; end; |
keny
一般會員 發表:1 回覆:11 積分:2 註冊:2006-08-31 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
[發表] 顯示作業系統版本(GetOSVersionDetail.zip)(含Source Code)
http://delphi.ktop.com.tw/board.php?cid=31&fid=77 [發表] 顯示作業系統版本GetOSVersion.zip(含Source Code) http://delphi.ktop.com.tw/board.php?cid=31&fid=77&tid=86889
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
keny
一般會員 發表:1 回覆:11 積分:2 註冊:2006-08-31 發送簡訊給我 |
|
fwy
一般會員 發表:1 回覆:3 積分:0 註冊:2007-02-16 發送簡訊給我 |
{************************************************} { Function to detect OS Version by Nico Bendlin } {************************************************} {$IFDEF CONDITIONALEXPRESSIONS} {$IF Defined(TOSVersionInfoEx)} {$DEFINE TOSVERSIONINFOEX_DEFINED} {$IFEND} {$ENDIF} {$IFNDEF TOSVERSIONINFOEX_DEFINED} type POSVersionInfoEx = ^TOSVersionInfoEx; TOSVersionInfoEx = packed record dwOSVersionInfoSize: DWORD; dwMajorVersion : DWORD; dwMinorVersion : DWORD; dwBuildNumber : DWORD; dwPlatformId : DWORD; szCSDVersion : array [0..127] of AnsiChar; wServicePackMajor : Word; wServicePackMinor : Word; wSuiteMask : Word; wProductType : Byte; wReserved : Byte; end; const VER_SERVER_NT = $80000000; {$EXTERNALSYM VER_SERVER_NT} VER_WORKSTATION_NT = $40000000; {$EXTERNALSYM VER_WORKSTATION_NT} VER_SUITE_SMALLBUSINESS = $00000001; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS} VER_SUITE_ENTERPRISE = $00000002; {$EXTERNALSYM VER_SUITE_ENTERPRISE} VER_SUITE_BACKOFFICE = $00000004; {$EXTERNALSYM VER_SUITE_BACKOFFICE} VER_SUITE_COMMUNICATIONS = $00000008; {$EXTERNALSYM VER_SUITE_COMMUNICATIONS} VER_SUITE_TERMINAL = $00000010; {$EXTERNALSYM VER_SUITE_TERMINAL} VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED} VER_SUITE_EMBEDDEDNT = $00000040; {$EXTERNALSYM VER_SUITE_EMBEDDEDNT} VER_SUITE_DATACENTER = $00000080; {$EXTERNALSYM VER_SUITE_DATACENTER} VER_SUITE_SINGLEUSERTS = $00000100; {$EXTERNALSYM VER_SUITE_SINGLEUSERTS} VER_SUITE_PERSONAL = $00000200; {$EXTERNALSYM VER_SUITE_PERSONAL} VER_SUITE_BLADE = $00000400; {$EXTERNALSYM VER_SUITE_BLADE} VER_SUITE_EMBEDDED_RESTRICTED = $00000800; {$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED} VER_SUITE_SECURITY_APPLIANCE = $00001000; {$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE} const VER_NT_WORKSTATION = $0000001; {$EXTERNALSYM VER_NT_WORKSTATION} VER_NT_DOMAIN_CONTROLLER = $0000002; {$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER} VER_NT_SERVER = $0000003; {$EXTERNALSYM VER_NT_SERVER} {$ENDIF} // TOSVERSIONINFOEX_DEFINED function GetOSVersionInfo(var Info: TOSVersionInfoEx): Boolean; begin FillChar(Info, SizeOf(TOSVersionInfoEx), 0); Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx); Result := GetVersionEx(TOSVersionInfo(Addr(Info)^)); if (not Result) then begin FillChar(Info, SizeOf(TOSVersionInfoEx), 0); Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx); Result := GetVersionEx(TOSVersionInfo(Addr(Info)^)); if (not Result) then Info.dwOSVersionInfoSize := 0; end; end; function GetOSVersionText: string; var Info: TOSVersionInfoEx; Key: HKEY; begin Result := ''; if (not GetOSVersionInfo(Info)) then Exit; case Info.dwPlatformId of { Win32s } VER_PLATFORM_WIN32s: Result := 'Microsoft Win32s'; { Windows 9x } VER_PLATFORM_WIN32_WINDOWS: if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 0) then begin Result := 'Microsoft Windows 95'; if (Info.szCSDVersion[1] in ['B', 'C']) then Result := Result ' OSR2'; end else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 10) then begin Result := 'Microsoft Windows 98'; if (Info.szCSDVersion[1] = 'A') then Result := Result ' SE'; end else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 90) then Result := 'Microsoft Windows Millennium Edition'; { Windows NT } VER_PLATFORM_WIN32_NT: begin { Version } if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then Result := 'Microsoft Windows Server 2003' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then Result := 'Microsoft Windows XP' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then Result := 'Microsoft Windows 2000' else Result := 'Microsoft Windows NT'; { Extended } if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then begin { ProductType } if (Info.wProductType = VER_NT_WORKSTATION) then begin if (Info.dwMajorVersion = 4) then Result := Result #10'Workstation 4.0' else if(Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then Result := Result #10'Home Edition' else Result := Result #10'Professional'; end else if (Info.wProductType = VER_NT_SERVER) then begin if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then begin if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then Result := Result #10'Datacenter Edition' else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result #10'Enterprise Edition' else if (Info.wSuiteMask = VER_SUITE_BLADE) then Result := Result #10'Web Edition' else Result := Result #10'Standard Edition'; end else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then begin if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then Result := Result #10'Datacenter Server' else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result #10'Advanced Server' else Result := Result #10'Server'; end else begin Result := Result #10'Server ' IntToStr(Info.dwMajorVersion) '.' IntToStr(Info.dwMinorVersion); if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result ', Enterprise Edition'; end; end; end; { CSDVersion } if (Info.dwMajorVersion = 4) and (StrIComp(Info.szCSDVersion, 'Service Pack 6') = 0) and (RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009', 0, KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) then begin Result := Result #10'Service Pack 6a'; RegCloseKey(Key); end else Result := Result #10 StrPas(Info.szCSDVersion); Result := Result #10'(Build ' IntToStr(Info.dwBuildNumber and $FFFF) ')'; end; end; end; //////////////////////////////////////////////////////////////////////// //////// procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetOSVersionText); end; |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |