1. ホーム
  2. c#

[解決済み] Vista で Environment.GetFolderPath(...CommonApplicationData) が "C:\Documents and Settings" を返している。

2023-04-30 13:52:07

質問

私が理解するところでは、あなたは以下のように Environment.GetFolderPath メソッドを使用することで、OSに依存しないコードを作成することができます...

Windows XPでは C:\Documents and Settings\ . Windows Vista では C:\ProgramDataC:\Users .

Windows Vista のコンピュータで以下のコードを使用していますが、このコードは C:\Documents and Settings\ ディレクトリの代わりに C:\ProgramData のように表示されるのですが・・・。何かアイデアはありますか?

    string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
    try
    {
        File.CreateText(
            Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
            "\\mycompany\\uid");
        log.Debug("Created file successfully");
    }
    catch (Exception ex)
    {
        log.Error("Unable to create the uid file: ", ex);
    }

どのように解決するのですか?

私のインストーラーは、XP コンピューター上で生成された log.txt ファイルをコピーしました。 私はそのログ ファイルを Vista で生成されたものと思って見ていました。 一度、私の log4net 設定を "Vista Compatible" に修正しました。 Environment.GetFolderPathは期待通りの結果を返していました。 したがって、私はこの投稿を閉じます。

次の SpecialFolder パスのリファレンスは有用かもしれません。

Windows Server 2003 での出力。

SpecialFolder.ApplicationData。C:\Documents and SettingsblakeApplication Data
SpecialFolder.CommonApplicationData: C:\Documents and Settings﹑All Users﹑Application Data
SpecialFolder.ProgramFiles: C:\Program Files
SpecialFolder.CommonProgramFiles: C:\Program Files╱Common Files
SpecialFolder.DesktopDirectory: C:\Documents and Settings↵Desktop
SpecialFolder.LocalApplicationData: C:\Documents and Settings︓Local Settings︓Application Data
SpecialFolder.MyDocuments: C:\Documents and Settings︓My Documents
SpecialFolder.System: C:\WINDOWS

Vistaでの出力です。

SpecialFolder.ApplicationData。C:UsersblakeAppDataRoaming
SpecialFolder.CommonApplicationData: C:\ProgramData
SpecialFolder.ProgramFiles: C:\Program Files
SpecialFolder.CommonProgramFiles: C:\Program Files⇄Common Files
SpecialFolder.DesktopDirectory: C:\UsersDesktop
SpecialFolder.LocalApplicationData: C:\Usersblake╱AppData╱Local
SpecialFolder.MyDocuments: C:\Usersblake╱Documents
SpecialFolder.System: C:\Windows