【问题标题】:Why I get Access denied when try to read file from ProgramFiles/MyApp?为什么在尝试从 ProgramFiles/MyApp 读取文件时访问被拒绝?
【发布时间】:2010-09-15 15:54:29
【问题描述】:

我正在尝试从 ProgramFiles/MyApp 中的配置文件中读取,但在 Windows 7 中,它会抛出拒绝访问的异常,它与 ProgrammData/MyApp 中的文件相同:

fileStream = new FileStream(this.StorageName, FileMode.Open, FileAccess.Read);

是不是只能从这些文件夹中读取?

【问题讨论】:

  • 需要更多信息:如何创建目录并将文件放入其中?目录和文件的所有者和权限设置是否正确?您的内容是否位于正确的 Program Files 目录中(例如,64 位操作系统上的 32 位程序的 Program Files (x86))?
  • 两个目录都是在安装过程中创建的。该程序是 x86,因此它安装在 C:\Program Files (x86)\MyProgram,Windows 7 是 x64。我发现它在应用程序签名时读取没有问题,或者在未签名时在 UAC 问题后读取。

标签: .net windows uac access-denied


【解决方案1】:

看看这个: http://social.msdn.microsoft.com/forums/en-us/windowsgeneraldevelopmentissues/thread/53660459-EC32-4819-9213-5190F5A1B885

这似乎是一个UAC问题,你应该根据nmahajan重新定位你的信息。

这个更好: http://social.msdn.microsoft.com/Forums/en/windowsgeneraldevelopmentissues/thread/dd28741a-1025-4ca2-a88b-95a5ea156e7f

引用 GTVic:

1 - C:\用户\用户名\文档
2 - C:\Users\用户名\AppData\Local
3 - C:\Users\用户名\AppData\Roaming
4 - C:\Users\Public\Documents
5 - C:\ProgramData
用于:
1 - 一位用户在登录到一台特定计算机时的私有数据
用户可以通过浏览其 Documents 文件夹轻松找到数据库文件

2 - 一位用户在登录到一台特定计算机时的私有数据
数据库文件位于隐藏文件夹中,但熟练用户可以访问

3 - 一位用户在登录到任何联网计算机时的私有数据
数据库文件位于隐藏文件夹中,但熟练用户可以访问

4 - 对登录到特定计算机的任何用户公开的数据
用户可以通过浏览公共文档文件夹轻松找到数据库文件

5 - 对登录到特定计算机的任何用户公开的数据
数据库文件位于隐藏文件夹中,但熟练用户可以访问

【讨论】:

  • 没有理由为什么只读的、程序特定的配置信息不能与程序本身一起驻留在 Program Files 目录中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多