1

これは非常に単純な問題です。

注:人々がこの同じ問題を見つけてどこかに投稿したと確信していますが、それを見つけるための正しい検索用語がわかりません。

さて、これが私の問題です。私のプログラムがに保存されているとしましょうC:\Program Files (x86)\MyProgram\Program.exe。プログラムでは、基本的には

Directory.CreateDirectory(Application.StartUpPath + "\\Files")

したがって、基本的に、これにより、プログラム自体と同じフォルダーに Files というディレクトリが作成されます。その場所にフォルダーを作成する必要があると仮定すると、別の場所を使用することはできません。

したがって、本当の問題は、それが c:\Program Files ディレクトリにある場合、フォルダーを作成しようとするとプログラムが「アクセス拒否」されることです。

では、ユーザーに管理者として実行させることなく、このようなものを機能させるにはどうすればよいでしょうか?

4

3 に答える 3

7

Windows 7 の場合、UAC が昇格されている場合、「管理者として実行」で自分自身を root 化しない限り、c:\Program Files の内容を変更することはできません。

また、Windows はマルチユーザー オペレーティング システムであるため、ユーザー固有のものを格納すると、災害の原因になります。

プログラムがデータを配置する適切な場所は、適切な特別なフォルダーです。これは、次のいずれかを介して取得/作成できます。

// user-specific application data is stored here
string userSpecificAppDataDirectory = Environment.GetFolderPath(
                                        SpecialFolder.ApplicationData ,
                                        SpecialFolderOption.Create
                                        ) ;

// application data common to all users is stored here
string commonAppDataDirectory = Environment.GetFolderPath(
                                  SpecialFolder.CommonApplicationData ,
                                  SpecialFolderOption.Create
                                  ) ;

または他のEnvironment.GetFolderPath()オーバーロードの 1 つ。

于 2013-06-14T23:31:00.163 に答える
1

インストール手順中に必要なファイルまたはフォルダーを作成してみてください。サード パーティのインストール クリエーターを使用した場合にどのような成功が見られるかはわかりませんが、Visual StudioのセクションのタブにあるApplication Files...ボタンを介して追加されたアイテムには、アプリケーションで使用するために本質的に付与されたアクセス権限があると理解しています。PublishProject Properties

于 2013-06-14T23:11:22.217 に答える