12

アプリケーションデータディレクトリへのパスを取得するには、いくつかの方法があります。

  • %APPDATA%環境変数を使用する
  • SHGetFolderPathで呼び出すCSIDL_APPDATA

プログラム内からパスを取得するための最良の方法は何ですか?環境変数を使用する際の落とし穴はありますか?

XP、Vista、および今後のバージョンで最も安全な方法はどれですか?

4

5 に答える 5

12

呼び出しSHGetFolderPath()が最も適切で移植可能な方法であることをお勧めします。環境変数を読み取る、または (さらに悪いことに) レジストリから抽出しようとするなどの代替手段は、将来つまずく可能性があります。

Raymond Chen は、レジストリからそのようなパスを取得することがなぜ悪い考えなのかを説明する記事を書いています。

于 2009-01-31T16:44:47.917 に答える
12
    string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Environment.SpecialFolder.ApplicationData は単なる列挙型であるため、GetFolderPath メソッドを使用して実際のパスを取得する必要があります。

于 2010-02-03T23:09:11.773 に答える
0

.NETでプログラミングしている場合は、次を使用できます。

string appDataPath = Environment.SpecialFolder.ApplicationData;
于 2009-02-10T16:05:00.940 に答える
0

誰かが疑問に思っている場合、Rubyではコマンドは次のようになります。

appDataPath = ENV['APPDATA'] 
于 2012-02-27T17:47:07.953 に答える
0

Pythonの重要な違いの1つは、Unicodeファイルパスの場合ctypes.windll.shell32.SHGetFolderPathW、Unicode文字列を返すのに対しos.environ['APPDATA']、バイト文字列を返すことです。

于 2009-10-02T10:52:03.123 に答える