• ベストアンサー

OSを判別する方法

現在、OSを認識してHOSTを修正するプログラムを作成しています。 OSを判別する際に With udtOSVersionInfo ' プラットフォームを表示 Select Case .dwPlatformId 'Win95/98/ME Case VER_PLATFORM_WIN32_WINDOWS 'WinNT/Win2000/WinXP Case VER_PLATFORM_WIN32_NT 上記の方法を用いていますが、ホストファイルの場所はOSによって 異なります。 WinNT/Win2000 C:\WINNT\SYSTEM32\DRIVERS\ETC\HOSTS WinXP C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS VBでOSを認識する際にWinNT/Win2000/WinXPをさらに どうやって判別すればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

的外れだったら申し訳ございません。 質問の内容からすると、システムディレクトリが取得できればいいような気がするのですが・・・ Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Dim strBuf As String Dim strPath As String Const gintMAX_SIZE% = 255 '最大バッファ サイズ strBuf = Space$(gintMAX_SIZE) 'System ディレクトリのパス名を取得し、 'バッファ文字列の長さを調整し、 '末尾に円記号がない場合は追加します。 If GetSystemDirectory(strBuf, gintMAX_SIZE) Then Dim nPos As Long nPos = InStr(strBuf, vbNullChar) If nPos > 0 Then strPath = RTrim$(Left$(strBuf, nPos - 1)) Else strPath = RTrim$(strBuf) End If If Right$(strPath, 1) <> "\" Then strPath = strPath & "\" End If End If いかがでしょうか?

その他の回答 (4)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

あと、system32ディレクトリの決め打ちはいけません。 GetSystemDirectory()を使用して取得しましょう。 http://vbvbvb.com/jp/gtips/0501/gGetSystemDirectory.html

参考URL:
http://vbvbvb.com/jp/gtips/0501/gGetSystemDirectory.html
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

あのう、 現在取得しようとしている手段を書いてくださいよ・・・ VER_PLATFORM_WIN32_WINDOWSってあるからGetVersionExかとは思いますが・・・ >With udtOSVersionInfo ってOSVERSIONINFO構造体の変数名ですか? dwMinorVersionで振り分けられると思いますけど。 http://plaza5.mbn.or.jp/~heropa/vb25.htm

参考URL:
http://plaza5.mbn.or.jp/~heropa/vb25.htm
  • Vargas
  • ベストアンサー率45% (9/20)
回答No.2

environ("windir")でwin2000ならc:\winnt winxpならc:\windowsが取得できます。 後は#1さんの通りですね。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

環境変数 winbootdir か、APIによって C:\WINNT\ または C:\WINDOWS\ の部分を取得できます。 あとは、取得したディレクトリ位置に SYSTEM32\DRIVERS\ETC\HOSTS を連結すれば良い筈です。

関連するQ&A

専門家に質問してみよう