- ベストアンサー
ウインドウズフォルダにまつわる事
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ファイルを作成したい場合などパスを求める方法等も知りたいです。
- みんなの回答 (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)
>ウインドウズフォルダを返す方法 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ファイル名を結合すれば良いと思います。