Geo*_*ge2 15 .net c# permissions
我正在使用inno setup为我的应用程序创建一个安装包,我的应用程序是由C#+ .Net 2.0 + VSTS 2008编写的.Inno setup => http://www.jrsoftware.org/isinfo.php我安装了我的Program Files/Foo文件夹下的应用程序(Foo是我的应用程序名称).我的应用程序针对Windows Vista.
我发现的问题是我的程序无法写入Program Files/Foo文件夹.我需要写入此文件夹的权限才能保存一些配置文件.我注意到奇怪的是程序文件/美孚被标记为只读文件夹,我已经检查Program Files下的所有文件夹都标有只读,如Office.
我的问题是,
Pau*_*enk 14
您应该使用特殊文件夹枚举和Enivronment.GetFolderPath将用户特定的配置数据写入当前用户的Application Data文件夹.
And*_*ewS 12
最佳实践是不将配置数据存储在Program Files文件夹中.而是将应用程序的数据存储在%AppData%\ YourApplicationName中.根据您是要按用户存储配置数据还是存储在共享公用文件夹中,请使用以下枚举之一来获取文件夹路径:
string userAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string commonAppData = Envrionment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
Run Code Online (Sandbox Code Playgroud)
默认情况下,Vista用户不以管理员身份运行程序,因此这些程序只能读取 "程序文件"下的文件夹.用户可以通过禁用UAC来更改此行为,您可以要求您的用户执行此操作,但在办公室设置中,用户可能没有该选项.这就是您使用AppData的原因 - 应用程序始终可以读取和写入AppData文件夹的数据.
有关UAC的信息可以在Microsoft的站点上找到.虽然这个页面相当长,但它是理解UAC的起点:http: //msdn.microsoft.com/en-us/library/bb530410.aspx
一个常见的解决方案是将配置文件安装到Application Data文件夹,如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)