Bas*_*asj 35 windows privileges winapi uac
正如指出的用C编写的配置文件:\程序文件(x86)\ MyApp的\ myapp.cfg,对管理员权限,这是不是写在配置文件中是一个好主意C:\Program Files (x86)\MyApp\myapp.cfg
.
而不是这个,我的软件现在将其数据保存在子目录中%ALLUSERSPROFILE%
(例如:C:\ProgramData\MyApp\myapp.cfg
在Win7上)
[我myfile = open(filename, 'a')
在Python中使用它来执行此操作.]
我现在遇到有关此文件的问题:
User A
,然后运行它,然后C:\ProgramData\MyApp\myapp.cfg
编写了文件.User B
,并再次运行我的软件:现在显示错误:User 2
无权写入C:\ProgramData\MyApp\myapp.cfg
(Permission denied
).为什么?不是%ALLUSERSPROFILE%
所有用户都可以写的地方吗?如何解决这个问题呢 ?
Dav*_*nan 34
不,C:\ProgramData
也就是说FOLDERID_ProgramData
,限制了安全设置.标准用户可以在那里创建文件.但是,默认情况下,这些文件是安全的,因此只有创建该文件的用户才能随后修改该文件.
建议的解决方案是让安装程序C:\ProgramData
为共享存储创建子目录.并且安装程序必须为该子目录提供许可ACL.这就是授予所有标准用户所需访问权限的原因.
我想知道你是否真的需要共享的可写数据.通常我希望看到共享配置是在安装时指定的并且管理员不经常修改的.大多数配置数据往往是每个用户.
小智 8
我想补充这一点,因为我在写作时C:\ProgramData
也遇到了问题。我的问题最终是我的目录/文件C:\ProgramData
是由管理员编写的。当我的应用程序在普通用户下运行时,它无法在那里写入,因此 Windows 自动使用它C:\Users\fooface\AppData\Local\VirtualStore\ProgramData
。我通过在我的应用程序上使用进程监视器找到了它正在写入的路径。看到这个后,我删除了文件C:\ProgramData
并再次运行我的应用程序,它按预期写入那里。
希望这对某人有帮助。
归档时间: |
|
查看次数: |
28655 次 |
最近记录: |