- ベストアンサー
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をさらに どうやって判別すればいいでしょうか?
- みんなの回答 (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)
あと、system32ディレクトリの決め打ちはいけません。 GetSystemDirectory()を使用して取得しましょう。 http://vbvbvb.com/jp/gtips/0501/gGetSystemDirectory.html
- taka_tetsu
- ベストアンサー率65% (1020/1553)
あのう、 現在取得しようとしている手段を書いてくださいよ・・・ VER_PLATFORM_WIN32_WINDOWSってあるからGetVersionExかとは思いますが・・・ >With udtOSVersionInfo ってOSVERSIONINFO構造体の変数名ですか? dwMinorVersionで振り分けられると思いますけど。 http://plaza5.mbn.or.jp/~heropa/vb25.htm
- Vargas
- ベストアンサー率45% (9/20)
environ("windir")でwin2000ならc:\winnt winxpならc:\windowsが取得できます。 後は#1さんの通りですね。
- chie65536
- ベストアンサー率41% (2512/6032)
環境変数 winbootdir か、APIによって C:\WINNT\ または C:\WINDOWS\ の部分を取得できます。 あとは、取得したディレクトリ位置に SYSTEM32\DRIVERS\ETC\HOSTS を連結すれば良い筈です。