C# Windows 7没有';不允许我编辑公用应用程序数据文件夹中的文件

C# Windows 7没有';不允许我编辑公用应用程序数据文件夹中的文件,c#,windows,uac,C#,Windows,Uac,我想在Windows 7下的常用应用程序数据中为我的软件存储一些文件并进行编辑 我不知道为什么Windows 7不允许我的软件更改文件 除非我以管理员身份运行它们 我可以在哪里存储文件,这样就不需要管理员权限?由于用户访问控制,您需要使用提升来修改这些文件。有关更多详细信息,请参阅这篇MSDN文章: 如果您不确定如何在C#中执行此操作,这里有一篇文章:某些文件夹在windows 7中受到限制,除非您正在安装、卸载或修补,否则不应触摸这些文件夹。请看它是完全相同的情况 如果您有多个应用程序需要编辑

我想在Windows 7下的常用应用程序数据中为我的软件存储一些文件并进行编辑

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


我可以在哪里存储文件,这样就不需要管理员权限?

由于用户访问控制,您需要使用提升来修改这些文件。有关更多详细信息,请参阅这篇MSDN文章:

如果您不确定如何在C#中执行此操作,这里有一篇文章:

某些文件夹在windows 7中受到限制,除非您正在安装、卸载或修补,否则不应触摸这些文件夹。请看它是完全相同的情况

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

Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData)
System.Environment.SpecialFolder.CommonProgramFiles
(我想您正试图写入的文件夹)是只读的,除非您被提升

从MSDN中阅读,它解释了应在何处保存数据以及如何正确使用各种文件夹。总而言之,我的解决方案是他列表中的第一个:


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

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

您应该将应用程序数据存储在
环境.GetFolderPath(Environment.SpecialFolder.ApplicationData)下的子文件夹中。请注意,此文件夹是特定于用户的

非管理员用户无权写入
CommonApplicationData
文件夹,因为该文件夹不属于特定用户


请注意,您还可以使用settings类存储设置。为此,请将新项目添加到项目中,然后选择“设置文件”。这适用于字符串和数字等基本设置。

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

我已使用此选项,并将我的文件存储在此文件夹中,但windows不允许更改!嗯,我刚刚检查了我对C:\ProgramData的权限,它是只读的。。。嗯,不,我使用了CommonApplicationData,我可以在哪里存储文件,因此我不需要管理员权限。如果您的目标是让计算机上的所有用户共享设置,这是一个很好的解决方案。如果没有,试试我的建议。关闭UAC不是解决此问题的好方法。@Henk:CommonApplicationData+0:仅为保存应用程序设置而请求提升是个坏主意。写入常用应用程序数据不需要提升。。。但应用程序应该在管理员帐户内运行…“您应该更改您的设计(写在其他地方)”。。但是,在哪里?