• ベストアンサー

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

  • hostsファイルを開きたいのですが・・・

    hostsファイルを見たいのですが、 「ファイル名を指定して実行」で、 「C:\WINNT\system32\drivers\etc\host」をしても、 「C:\WINNT\system32\drivers\etc\hostは利用できない場所を参照しています。このコンピューターのハード ドライブ上、またはネットワーク上を参照している可能性があります。インターネットやネットワークに接続しているかどうか確認してから、やり直してください。それでも、見つからない場合は、その情報は別の場所に移動した可能性があります。」 とでて、開けません。これは、どういうことなのでしょうか? そして、どうすれば開けますでしょうか? どうぞご教授ください。よろしくお願いします。

  • Trojan Horseの駆除方法

    どなたか教えてください。 NortonAntivirusでウイルススキャンした結果 TrojanHorseに感染していました。 修復しようとしましたが、修復不可能でした。 OS:Windows2000 server 感染ウイルス:TrojanHorse 感染場所:WINNT\System32\drivers\etc\hosts 今のところ、これといった障害はないのですが、 なにせ、弊社のサーバーのため困っています。 どなたか、教えていただけますでしょうか。 宜しくお願いいたします。

  • localhostにアクセスできない

    以前は問題なく http://localhost/ にアクセスでき、ASPの開発ができていたのですが、 最近アクセスができなくなってしまいました。 原因がわかりません。 C:\WINNT\system32\drivers\etc\hosts の内容も 127.0.0.1 localhost となっていて問題ありません。 解決方法をご存知のかたは教えてください。 Windows 2000 Professional を使用しています。

  • hostsファイルを別なディレクトリに移すと。。

    お世話になっております。 C:\Windows\System32\DRIVERS\ETC\hosts ファイルを C:Windows直下に移動すると、機能しないでしょうか? おしえてください。

  • hostsファイルについて

    はじめまして。ネットワークエンジニアの卵です。 ●http://www.atmarkit.co.jp/icd/root/11/5784411.htmlを読んでの質問です。このサイトでは、hostsファイルについて、次のように説明されています。 ================================================================  TCP/IPを使ったネットワークにおいて、あるノードのIPアドレスと、 そのノードを表わす分かりやすい文字列(別名)の対応を記録した ファイルのこと。  TCP/IPを実装したマシンでは、ほとんどの場合、このhostsファイルを参照して名前解決をすることができる。  hostsファイルの、OS別ディレクトリ位置  ・UNIX系のOSは、/etc/hosts  ・Windows 95/98では、C:\Windows\hosts  ・Windows NTではC:\Winnt\System32\Drivers\Etc\hosts ================================================================ 上記にあるように、MS-DOSプロンプトを起動し、 C:\Documents and Settings\computername>上記のディレクトリを試しましたが、全て失敗です。  いずれも、'内部コマンドまたは外部コマンド、操作可能な プログラムまたはバッチ ファイルとして認識されていません。’や、 ’指定されたパスが見つかりません。’等と表示されてしまいます。 hostsファイルとは標準装備されているものではないのでしょうか。 ちなみにOSは、WindowsXP home Edition です。 上記2点について長々と説明させて頂きましたが、ご回答お願いしす。 また、ネットワーク初心者でも、分かりやすくて丁寧なサイトがありましたらURLも教えて下さい。

  • hosts ファイルが、アプリケーションを起動するたびに消えてしまいます。

    C:\WINDOWS\System32\drivers\etc 内のhosts ファイルが、アプリケーションを起動するたびに消えてしまいます。 社内のパソコンで Windows XP Pro SP2 を使用しています。支社から本社にあるサーバへの接続のため、C:\WINDOWS\System32\drivers\etc 内の hosts ファイルに本社のサーバーの名前を登録して名前解決していましたが、ある日突然、ホスト名でのアクセスができなくなりました。そこで、C:\WINDOWS\System32\drivers\etc 内をのぞいてみたところ、hosts ファイルがなくなっていたので、新規に作成してホスト名でのアクセスを試みましたが、それでもアクセスできません。そこで再度フォルダ内を見てみたところ、hosts ファイルが消えていました。さらに色々と確かめた結果、C:\WINDOWS\System32\drivers\etc 内の hosts ファイルがあらゆるアプリケーション(まさに全てのアプリケーション。メモ帳でも電卓でもです。)を起動するたびに消えてしまうのです。フォルダを開いて様子を見てますと、アプリケーションを起動するたびにまさに目の前で hosts ファイルだけが消えてしまいます。フォルダ内の他のファイルは、全く問題ありません。C:\WINDOWS\System32\drivers\etc\hosts ファイルがピンポイントで消えてしまいます。スパイウェア等の悪質なプログラムの存在を疑い、ウィルスバスター2007、スパイボット、カスペルスキーアンチウイルス6.0 でスキャンしてみましたが、気になるものは検出されませんでした。全く摩訶不思議で不可解な現象なので、途方にくれています。尚、今現在、2台(それぞれ別の支社)のパソコンで同じ現象が発生しています。どなたか、アドバイス、情報の方をよろしくお願い致します。

  • C:\Windows\system32\drivers\etc\hos

    C:\Windows\system32\drivers\etc\hosts Notepadで実行してから書き換えて上書きをしようとしてるのですが、「パスおよびファイル名が正しいか確認してください。」とでて上書きすることが出来ません。 そのまま保存しようとすると、txtファイルができるだけで、hostsファイルの内容は変わっていません。 ログインは、Administratorで行っています。どうしてできないのでしょうか? 宜しくお願いします。 ノートパソコン Panasonic Microsoft Windows XP Professional Ver2002 Service Pack2

  • hosts が消えました。

    WINDOWS/system32/drivers/etc/hosts が手違いで消えてしまいました。 直し方のアドバイスお願いします。

  • hostsの役割

    よくネットワーク関係で C:\WINDOWS\system32\drivers\etc\hosts に記述するとかいわれますが, これってどんな効能があるのですか. わたしはWindowsXP(SP2)に付属のIIS5.1をいれてありますが 127.0.0.1 localhost と書かれています.

  • /etc/hosts の編集ができない。

    Vistaを使っているのですがhostsの編集が出来ません。 メモ帳を「管理者として実行」で起動し ファイル>開くからhostsを開いて上書き保存しようとしたのですが > ファイル C:\Windows\system32\drivers\etc\hosts を作成できません。 > パスおよびファイル名が正しいか確認してください。 とでて上書きが出来ないのです・・・ どうすれば編集が出来るようになるのでしょうか?

専門家に質問してみよう