お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"ServerかWorkStationかを返す関数"

この発言は
#01423 いさやん さんのWindowsNTかを返す関数
に対するコメントです

  NTでさらにServer か WorkStationかを判定する方法です。 W2KではProfessional,XPではHomeEdition,Professional が WorkStation OSのバージョンを返す関数としてGetVersionEx がありますが この関数の引数につかえる OSVERSIONINFOEX 構造体にいつのまにか wProductType が増えてこれで判定できるようになってるみたいですが、 > Windows NT/2000/XP: Included in Windows NT 4.0 SP6 and later. とあります。そもそもDelphiにOSVERSIONINFOEX が定義されてないようです ので確実に判定するためにレジストリチェックして判定する方法です。 uses Registry; // usesする { ProductType 文字列を返します } { WINNT Windows NT Workstation SERVERNT Windows NT Server (3.5 以降) LANMANNT Windows NT Advanced Server (3.1) } function GetProductType: string; const ProductKey = 'SYSTEM\CurrentControlSet\Control\ProductOptions'; var Reg: TRegistry; OsType: string; osv: TOSVERSIONINFO; begin Result := EmptyStr; osv.dwOSVersionInfoSize := sizeof(osv); GetVersionEx(osv); if (osv.dwPlatformId <> VER_PLATFORM_WIN32_NT) then begin Result := EmptyStr; Exit; end; Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKeyReadOnly(ProductKey); OsType := Reg.ReadString('ProductType'); Reg.CloseKey; finally Reg.Free; end; Result := OsType; end; { Workstation の判定 } { True の場合 Workstation} function IsNTWorkstation: boolean; var OsType: string; begin OsType := GetProductType; result := (CompareText(OsType, 'WINNT') = 0); end; { Server の判定 } { True の場合 Server} function IsNTServer: boolean; var OsType: string; begin OsType := GetProductType; result := (CompareText(OsType, 'SERVERNT') = 0) or (CompareText(OsType, 'LANMANNT') = 0); end; 参考URL: http://www.microsoft.com/JAPAN/support/kb/articles/JP152/0/78.asp http://www.microsoft.com/JAPAN/support/kb/articles/JP92/3/95.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us /sysinfo/sysinfo_92jy.asp (折り返してますので連結してください) @ノ" いさやん ~~~~~  Original document by いさやん 氏 ID:(YIB02642)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum