Установленному wpf приложению запрещен доступ к файлам данных - PullRequest
2 голосов
/ 19 декабря 2011

У меня есть папка с контентом в /Data в моем проекте.Когда я собираю его, а также когда использую средство установки visual studio, файлы там есть.Когда я запускаю программу, она говорит, что не имеет доступа к этим файлам.Как разрешить программе иметь доступ к файлу?

Файлы находятся в той же директории, что и exe.Если я просто запускаю файл в выходной папке отладки, он работает нормально, только когда установлен и идет в файлах программы.

Ответы [ 3 ]

1 голос
/ 19 декабря 2011

Вы не можете хранить файлы данных в программных файлах, для этого есть папка AppData.Программные файлы в основном читаются только из соображений безопасности.

1 голос
/ 19 декабря 2011

Чтобы немного расширить ответ @Lolcoder. В своих приложениях я использую Environment.GetEnvironmentVariable("ALLUSERSPROFILE") и добавляю каталоги своих приложений в этот каталог. Затем я использую настраиваемое действие фиксации в установщике Windows, чтобы запустить пакетный файл для передачи моих файлов из каталога программы в каталог «Все пользователи».

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 голос
/ 19 декабря 2011

В Windows программы не имеют доступа к файлам, пользователи имеют. Когда программа запускается, обычно она наследует права доступа пользователя, который ее запускает. Похоже, что NTFS-разрешения для доступа к папке установлены неправильно при установке. Определите, какие права доступа требуются, например, для чтения / записи, и проверьте, есть ли у пользователя эти права в папке / data.

Если он работает в Visual Studio и когда вы запускаете .exe в каталоге bin, я бы предположил, что you имеет необходимые разрешения в этих папках, и поэтому он работает правильно. У вас или у пользователя могут не быть одинаковые разрешения NTFS в каталоге программных файлов.

Другая возможность заключается в том, что загружаемые файлы данных не развертываются установщиком и поэтому не могут быть загружены.

...