インストールされたwpfアプリケーションのデータファイルへのアクセスが拒否されました

プロジェクトの/Data にコンテンツフォルダがあります。私がビルドするときと、ビジュアルスタジオのインストールクリエータを使用したときにも、ファイルがそこにあります。プログラムを実行すると、これらのファイルへのアクセスが拒否されます。プログラムにファイルへのアクセス権を与える方法を教えてください。

ファイルはexeと同じディレクトリにあります。私がデバッグ出力フォルダでファイルを実行しただけで、インストールされたときに正常に動作し、プログラムファイルに入ります。

2

3 答え

プログラムファイルにデータファイルを保存することはできません。そこにはAppDataフォルダがあります。プログラムファイルは基本的にセキュリティ上の理由からのみ読み込まれます。

1
追加された

Windowsでは、プログラムはファイルにアクセスできません。プログラムが実行されると、通常、プログラムを実行しているユーザーのアクセス権が継承されます。フォルダにアクセスするためのNTFSアクセス許可がインストールによって正しく設定されていないようです。どのようなアクセス権が必要なのか、つまり読み書きするか、ユーザーが/ dataフォルダーにその権利を持っているかどうかを確認します。

ビジュアルスタジオで動作し、binディレクトリの.exeを呼び出すと、それらのフォルダに必要な権限があるので正しく機能すると思います。ユーザーまたはユーザーが、プログラムファイルディレクトリに同じNTFSアクセス許可を持っていない可能性があります。

もう1つの可能性は、ロードしているデータファイルがインストーラによってデプロイされていないためロードできないことです。

1
追加された
その配備とそこに。パスは正しく設定されています。メモ帳でデータファイルを開いたり、保存したりできます。インストーラのフォルダにアクセス権を設定するにはどうすればよいですか?
追加された 著者 Shawn Mclean,
.msiファイルがある場合は、Orcaというツールを使用して.msiを編集し、フォルダのアクセス許可を変更することができると思います。
追加された 著者 Noel Kennedy,

@Lolcoderの答えをさらに拡大する。私のアプリケーションでは、 Environment.GetEnvironmentVariable( "ALLUSERSPROFILE") し、私のアプリケーションディレクトリをそのディレクトリに追加します。次に、Windowsインストーラでカスタムコミットアクションを使用して、ファイルをプログラムディレクトリからAll Usersディレクトリに転送するバッチファイルを実行します。

md "%ALLUSERSPROFILE%\YourApplicationName"
md "%ALLUSERSPROFILE%\YourApplicationName\Data"
cacls "%ALLUSERSPROFILE%\YourApplicationName" /E /P BUILTIN\Users:F
copy "C:\Program Files\YourApplicationName\Data\*.*" "%AllUSERSPROFILE%\YourApplicationName\Data"

これにより、ユーザー特有ではないアプリケーションレベルの設定が可能になります。

1
追加された