我正在尝试在32位Program Files文件夹中创建一个文件目录(文件夹),以存储用户将在程序中创建的数据。但是,当我尝试这样做时,它一直说访问被拒绝。反正是否允许程序访问32位程序文件文件夹并向其添加后续文件夹和文件?下面是我的代码,由于没有权限,它会产生运行时错误。
string mainDirectory=Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)+"\\UKC Trial Reporter Files";
if (!Directory.Exists(mainDirectory))
{
Directory.CreateDirectory(mainDirectory);
}
答案 0 :(得分:6)
将您的数据存储在Environment.SpecialFolder.ApplicationData
,Environment.SpecialFolder.LocalApplicationData
或Environment.SpecialFolder.CommonApplicationData
中(如果任何用户都必须可以访问数据)。
永远不要将它存储在%ProgramFiles%中。 %ProgramFiles%用于...程序文件:可执行文件,dll,app.config文件。
除了安全原因之外,还有另外一个原因:卸载时,应用程序的安装程序必须扫描它创建的所有文件和文件夹。当应用程序生命周期中更改installdir中的文件列表时,这是不可能的。
幸运的是,自Windows Vista发布以来,我们就拥有了UAC。
答案 1 :(得分:4)
Program FIles就是这样;它应该包含EXE和静态资源。
相反,您需要写入用户的SpecialFolder.ApplicationData
文件夹。