Windows 7不允许我编辑公共应用程序数据文件夹中的文件。

10

我想将一些文件存储在Windows 7中通用的应用程序数据文件夹下,并对它们进行编辑。

我不知道为什么Windows 7不允许我的软件更改文件,除非我以管理员身份运行它们。

我应该在哪里存储我的文件,这样就不需要管理员权限了呢?


@Henk:CommonApplicationData - Ata
5个回答

7
请将您的应用程序数据存储在Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);子文件夹中。请注意,该文件夹是用户特定的。
非管理员用户没有权限写入CommonApplicationData文件夹,因为该文件夹不属于特定用户。
请注意,您还可以使用设置类存储设置。要这样做,请向项目添加新项,选择“设置文件”。这适用于基本的字符串和数字设置。

3

一些文件夹在Windows 7中是受限的,除非您正在安装、卸载或打补丁,否则不应该触摸这些文件夹。请参见我今天早些时候接受的答案,它是完全相同的情况。

如果您有多个需要编辑同一文件的应用程序,则应将它们存储在

Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData)

System.Environment.SpecialFolder.CommonProgramFiles(我认为你试图写入的文件夹)除非你已经提升权限,否则只读。

请阅读这篇文章,它解释了应该在哪里保存数据以及如何正确使用各种文件夹。我的解决方案是他列表中的第一个,总结如下:

您需要在 CommonApplicationData 文件夹中安装程序时创建一个文件夹,然后设置该新文件夹的权限,以便用户组具有写入访问权限。


我已经使用了这个文件夹,并将我的文件存储在其中,但Windows不允许更改! - Ata
哦,我刚刚检查了一下我的C:\ProgramData的权限,发现这是只读模式... 嗯。 - Scott Chamberlain
不,我已经使用了 CommonApplicationData ,那么我可以在哪里存储我的文件,这样我就不需要管理员权限了。 - Ata
1
如果您的目标是在计算机上所有用户之间共享设置,则这是一个不错的解决方案。如果不是,请尝试我的建议之一。关闭UAC并不是解决此问题的好方法。 - Brian

3

+0:仅为保存应用程序设置而请求提升权限是一个不好的想法。 - Brian
不需要提升权限来编写Common App数据,但应用程序应在管理员账户内运行。 - Yesudass Moses

0

这是一个在Windows 7中默认开启的安全选项,即用户账户控制(UAC)。您应该更改设计(将其写在其他地方)或从控制面板\用户账户中关闭UAC。


你应该改变你的设计(在其他地方写)...但是,在哪里? - DefenestrationDay

0

我遇到了同样的问题,但是使用Inno Setup安装程序,我有一个名为“Permissions”的参数,我将值设置为“users-full”,以在我的应用程序文件夹中创建一个文件,并授予该文件的所有用户完全控制权。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接