C#访问被拒绝到Windows应用程序中的路径

Bri*_*tul 6 c# c#-3.0

我在Windows 7上使用c#构建了一个Windows应用程序.

一切都运行正常,所以我创建了一个安装向导项目,然后构建它.一旦我安装了应用程序,我就可以正确打开它,但是当我尝试执行一些写入文本文件的操作(带有日志记录)时,它会崩溃,并向我发出以下错误消息:

UnauthorizedAccessException

访问路径'C:\ Program Files(x86)\ MSProgram\MSProgram\log.txt'被拒绝.

当我手动给该文件夹完全权限时,它工作正常.现在,问题如下:

如何以编程方式为应用程序目录中的内容编写应用程序权限?因此,每个下载它的人都不会遇到同样的问题.

Ree*_*sey 21

别.应用程序不应直接将数据写入其安装目录.这样做会使应用程序在Windows Vista和Windows 7上运行不佳,因为它不是保存数据的正确方法.

您应该使用Environment.GetFolderPath,并写入一个好的位置,例如用户的应用程序数据文件夹(Environment.SpecialFolders.ApplicationData).


Jar*_*Par 10

解决方案不是授予该directry权限,而是写入更适合应用程序日志的文件夹."Program Files(x86)"和"Program Files"是应用程序安装的地方,而不是日志记录.

更合适的位置是每用户数据文件夹

  • %应用程序数据%
  • %LOCALAPPDATA%

或者Environment.GetFolderPath以下值的结果

  • SpecialFolder.ApplicationData
  • SpecialFolder.LocalApplicationData
  • SpecialFolder.CommonApplicationData