2013-05-31 50 views
1

我在VS 2010和C#中开发了一个小型Winform应用程序。并创建设置也。访问程序文件时拒绝文件访问

我已将应用程序配置文件放在应用程序文件夹路径中以保存用户凭据。安装应用程序无法访问配置文件,因为我定的程序默认安装路径后如下:

[ProgramFilesFolder] [生产企业] [产品名称]

所以我需要让我的用户凭据永久在其他地方。我需要读取和写入权限。另外我需要记录应用程序异常。

+0

http://stackoverflow.com/questions/7288444/how-to-give-read-write-permissions-to-a-folder-during-installation-using-net – 2013-05-31 04:53:30

+0

搜索运行你的应用程序与管理员权限。 http://stackoverflow.com/questions/7666408/how-to-request-administrator-permissions-when-the-program-starts –

+1

@FurqanAshraf这几乎从来都不是解决问题的正确方法。不需要*管理员权限的程序不应该要求它,最好是修复程序以执行所需的任何操作,而无需升级(如更改程序以保存在正确的位置)。如果你不得不提升它,*首选*仍然运行你的程序作为一个较低的权限,[只有当你需要执行任务需要管理员权限时提升](http://stackoverflow.com/questions/573086/how -to-提升-特权只-时要求的?RQ = 1)。 –

回答

7

应该保存用户数据的地方是在以下Environment.SpecialFolder位置之一

  • 的ApplicationData - 充当用于当前漫游应用程序特定数据的公共储存库的目录用户。漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络上的服务器上,并在用户登录时加载到系统中。
  • LocalApplicationData - 作为当前非漫游用户使用的应用程序特定数据的公共存储库的目录。
  • CommonApplicationData - 作为所有用户使用的应用程序特定数据的公用存储库的目录。

通过使用Enviorment.GetFolderPath

var savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), 
          "MyAppName"); 
//This should return the path %UserProfile%\Roaming\MyAppName\ 

对于程序日志,我会用CommonApplicationData所以从几个用户的日志都在一个位置收集得到的路径。

+0

感谢您的回复。我如何查看该日志文件。我只记录了一些txt,但我无法获得savePath。 – Mask

+0

我现在得到了,我必须先创建该目录。我使用了CommonApplicationData。 – Mask