2011-12-18 106 views
2

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

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

回答

1

在@Lolcoder的答案上进一步扩展。在我的应用程序中,我使用Environment.GetEnvironmentVariable("ALLUSERSPROFILE")并将我的应用程序directorys附加到该目录。然后我在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

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

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

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

+0

它的部署和在那里。路径设置正确。我可以用记事本打开并保存数据文件或单击它。如何在安装程序的文件夹中设置权限? – 2011-12-18 23:45:18

+0

如果您有.msi文件,我认为您可以使用称为Orca的工具来编辑.msi,并让它更改文件夹的权限。 – 2011-12-19 14:18:47

1

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