1

ユーザーがプログラムで作成するデータを保存するために、32 ビットの Program Files フォルダーにファイル ディレクトリ (フォルダー) を作成しようとしています。ただし、アクセスしようとすると、アクセスが拒否されたと言い続けます。プログラムに 32 ビット プログラム ファイル フォルダにアクセスする権限を与えて、それに続くフォルダとファイルを追加する方法はありますか? 以下は、権限がないために実行時エラーを生成している私のコードです。

string mainDirectory=Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)+"\\UKC Trial Reporter Files";
if (!Directory.Exists(mainDirectory))
{
    Directory.CreateDirectory(mainDirectory);
}
4

2 に答える 2

6

データをEnvironment.SpecialFolder.ApplicationDataEnvironment.SpecialFolder.LocalApplicationDataまたはEnvironment.SpecialFolder.CommonApplicationData(データにすべてのユーザーがアクセスする必要がある場合) に保存します。

%ProgramFiles% には絶対に保存しないでください。%ProgramFiles% の対象は... プログラム ファイル: 実行可能ファイル、dll、app.config ファイル。

セキュリティ上の理由に加えて、これを絶対に行わない理由がもう 1 つあります。それは、アンインストール時に、アプリケーションのインストーラーが作成したすべてのファイルとフォルダーを一掃する必要があることです。また、アプリケーションの存続期間中に installdir 内のファイルのリストが変更された場合、これは不可能です。

幸いなことに、Windows Vista がリリースされて以来、UAC があります。

于 2012-08-21T20:00:22.113 に答える
4

そうしないでください

Program FILEs はまさにそれです。EXE と静的リソースを含める必要があります。

SpecialFolder.ApplicationData代わりに、ユーザーのフォルダーに書き込む必要があります。

于 2012-08-21T19:57:22.800 に答える