• ベストアンサー

ウインドウズフォルダにまつわる事

VB2008でWindowsXP上でINIファイルの読み書きを行うプログラムを作っています。 VB.NETで特殊フォルダを取得したいのですが、以下の場合、 C:\Windows\System32となるのですが、C:\Windowsのようにウインドウズフォルダを返す方法はありますか? ' System ディレクトリ MessageBox.Show(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)) あとiniファイルをパスなしで作成するとC:\Windowsに作られるのですが デフォルトでそうなっているのでしょうか? WritePrivateProfileString("キーワード", "項目", 値, "test.ini") exeのあるカレントにiniファイルを作成したい場合などパスを求める方法等も知りたいです。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

System.Managementの ManagementClass/ManagementObjectから取得した方がいいかもしれません 環境変数に設定されていない場合もありますので …   Dim myObjClass As ManagementClass = New System.Management.ManagementClass("Win32_OperatingSystem")   Dim myObjColl As ManagementObjectCollection = myObjClass.GetInstances   Dim myObj As ManagementObject   For Each obj As Object In myObjColl     myObj = obj     Exit For   Next   s = myObj("WindowsDirectory").ToString   MsgBox(s) といった具合です プロジェクトの参照設定に『System.Management』を追加して コードの先頭に Imports System.Management も追加してください

その他の回答 (1)

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.1

>ウインドウズフォルダを返す方法 windowsフォルダは環境変数%windir%にセットされています。 MessageBox.Show(System.Environment.GetFolderPath(System.Environment.GetEnvironmentVariable("windir") )) で行けそうな気がします。 >デフォルトでそうなっているのでしょうか? MSDNヘルプに書いてあるはずです。 http://msdn.microsoft.com/ja-jp/library/cc429952.aspx 引用-------------- lpFileName パラメータでファイルのフルパスを指定しなかった場合、WritePrivateProfileString 関数は Windows ディレクトリ内でこのファイルを検索します。 このファイルが存在しない場合、この関数は Windows ディレクトリ内にその名前のファイルを作成します。 引用-------------- >exeのあるカレントにiniファイルを作成したい場合 上記のように絶対パスである必要があるため まずカレントフォルダ(System.IO.Directory.GetCurrentDirectory())を取得して、('\'デリミタを付けた上で)iniファイル名を結合すれば良いと思います。