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

时间:2011-12-18 23:17:09

标签: wpf windows-installer installation setup-deployment

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

您无法将数据文件存储在程序文件中,还有一个AppData文件夹。程序文件基本上是出于安全原因而读取的。

答案 2 :(得分:1)

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

这使我可以拥有非用户特定的应用程序级别设置。

相关问题