我想将一些文件存储在Windows 7中通用的应用程序数据文件夹下,并对它们进行编辑。
我不知道为什么Windows 7不允许我的软件更改文件,除非我以管理员身份运行它们。
我应该在哪里存储我的文件,这样就不需要管理员权限了呢?
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
子文件夹中。请注意,该文件夹是用户特定的。CommonApplicationData
文件夹,因为该文件夹不属于特定用户。一些文件夹在Windows 7中是受限的,除非您正在安装、卸载或打补丁,否则不应该触摸这些文件夹。请参见我今天早些时候接受的答案,它是完全相同的情况。
如果您有多个需要编辑同一文件的应用程序,则应将它们存储在
Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData)
System.Environment.SpecialFolder.CommonProgramFiles
(我认为你试图写入的文件夹)除非你已经提升权限,否则只读。
请阅读这篇文章,它解释了应该在哪里保存数据以及如何正确使用各种文件夹。我的解决方案是他列表中的第一个,总结如下:
您需要在 CommonApplicationData 文件夹中安装程序时创建一个文件夹,然后设置该新文件夹的权限,以便用户组具有写入访问权限。
这是一个在Windows 7中默认开启的安全选项,即用户账户控制(UAC)。您应该更改设计(将其写在其他地方)或从控制面板\用户账户中关闭UAC。
我遇到了同样的问题,但是使用Inno Setup安装程序,我有一个名为“Permissions”的参数,我将值设置为“users-full”,以在我的应用程序文件夹中创建一个文件,并授予该文件的所有用户完全控制权。