安装的 wpf 应用程序被拒绝访问数据文件

发布于 2024-12-21 17:50:28 字数 178 浏览 1 评论 0原文

我的项目中的 /Data 有一个内容文件夹。当我构建它以及使用 Visual Studio 安装创建器时,文件就在那里。当我运行该程序时,它说拒绝访问这些文件。如何让程序访问该文件?

这些文件与 exe 位于同一目录中。如果我只是在调试输出文件夹中运行该文件,它就可以在安装后正常运行并进入程序文件。

I have a content folder at /Data in my project. When I build it and also when I used the visual studio installation creater, the files are there. When I run the program, it says it is denied access to these files. How do I let the program have access to the file?

The files are in the same directory as the exe. If I just run the file in the debug output folder, it runs fine, just when installed and it goes in the program files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

熊抱啵儿 2024-12-28 17:50:28

进一步扩展 @Lolcoder 的答案。在我的应用程序中,我使用 Environment.GetEnvironmentVariable("ALLUSERSPROFILE") 并将我的应用程序目录附加到该目录。然后,我使用 Windows Installer 中的自定义提交操作运行批处理文件,将文件从程序目录传输到所有用户目录。

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

这允许我拥有非特定于用户的应用程序级别设置。

To expand a bit further on @Lolcoder 's answer. In my applications I use Environment.GetEnvironmentVariable("ALLUSERSPROFILE") and append my application directorys to that directory. I then use a Custom Commit Action in Windows Installer to run a Batch File to transfer my files from the program directory to the All Users directory.

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

This allows me to have application level settings that are not user specific.

梦里的微风 2024-12-28 17:50:28

在 Windows 中,程序无法访问文件,但用户可以。当程序运行时,通常它会继承运行它的用户的访问权限。听起来安装时未正确设置访问该文件夹的 NTFS 权限。确定需要哪些访问权限,即读/写,并检查用户在 /data 文件夹中是否具有这些权限。

如果它在 Visual Studio 中运行,并且当您调用 bin 目录中的 .exe 时,我猜您在这些文件夹中拥有必要的权限,因此它可以正常运行。您或用户在程序文件目录中可能没有相同的 NTFS 权限。

另一种可能性是您正在加载的数据文件未由安装程序部署,因此无法加载。

In Windows, programs don't have access to files, users do. When a program is run, typically it inherits the access rights of the user running it. It sounds like the NTFS permissions to access the folder are not being set correctly by the installation. Work out what access rights are required, ie read/write and check whether the user has those rights in the /data folder.

If it works in visual studio and when you invoke the .exe in the bin directory, I would guess that you have the requisite permissions in those folders and therefore it functions correctly. You or the user might not have the same NTFS permissions in the program files directory.

The other possibility is that the data files you are loading aren't being deployed by the installer and therefore can't be loaded.

手长情犹 2024-12-28 17:50:28

您不能将数据文件存储在程序文件中,有一个 AppData 文件夹。出于安全原因,程序文件基本上是只读的。

You cannot store data files in program files, there is an AppData folder for that. Program files is basically read only for security reasons.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文