1

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

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

2 回答 2

6

将您的数据存储在Environment.SpecialFolder.ApplicationData,Environment.SpecialFolder.LocalApplicationDataEnvironment.SpecialFolder.CommonApplicationData(如果数据必须可供任何用户访问)。

切勿将其存储在 %ProgramFiles% 中。%ProgramFiles% 用于... 程序文件:可执行文件、dll、app.config 文件。

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

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

于 2012-08-21T20:00:22.113 回答
4

不要那样做

程序文件正是如此;它应该包含 EXE 和静态资源。

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

于 2012-08-21T19:57:22.800 回答