使用C#将文件/文件夹添加到程序文件x86文件夹

时间:2012-08-21 19:53:32

标签: c# file-permissions program-files

我正在尝试在32位Program Files文件夹中创建一个文件目录(文件夹),以存储用户将在程序中创建的数据。但是,当我尝试这样做时,它一直说访问被拒绝。反正是否允许程序访问32位程序文件文件夹并向其添加后续文件夹和文件?下面是我的代码,由于没有权限,它会产生运行时错误。

string mainDirectory=Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)+"\\UKC Trial Reporter Files";
if (!Directory.Exists(mainDirectory))
{
    Directory.CreateDirectory(mainDirectory);
}

2 个答案:

答案 0 :(得分:6)

将您的数据存储在Environment.SpecialFolder.ApplicationDataEnvironment.SpecialFolder.LocalApplicationDataEnvironment.SpecialFolder.CommonApplicationData中(如果任何用户都必须可以访问数据)。

永远不要将它存储在%ProgramFiles%中。 %ProgramFiles%用于...程序文件:可执行文件,dll,app.config文件。

除了安全原因之外,还有另外一个原因:卸载时,应用程序的安装程序必须扫描它创建的所有文件和文件夹。当应用程序生命周期中更改installdir中的文件列表时,这是不可能的。

幸运的是,自Windows Vista发布以来,我们就拥有了UAC。

答案 1 :(得分:4)

不要那样做

Program FIles就是这样;它应该包含EXE和静态资源。

相反,您需要写入用户的SpecialFolder.ApplicationData文件夹。