在哪里可以编写可由Windows Vista中的所有用户查看和修改的数据?

时间:2009-05-22 14:01:57

标签: windows-vista

我需要编写一些数据(供试用/过期),我需要该应用程序能够通过UAC“on”从Vista上的非管理员帐户读取/写入该位置。

此外,我希望能够从任何用户帐户查看和修改数据。

我最初考虑过写入KHEY_CURRENT_USER注册表配置单元,但对每个用户来说都是唯一的。

其他任何地方?

我试过了: %ALLUSERSPROFILE%\ TestDirectory

但是如果NonAdmin1创建并编辑了一个文件,那么Admin1在修改后就无法保存该文件(尽管它可以读取文件)。

2 个答案:

答案 0 :(得分:1)

有关于此的博客文章:blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx(I我还不允许超链接,你必须先剪贴,直到它被纠正为止。

它实际上似乎围绕着一个特定问题:如果您有所有用户都可以写入的文件,您是否希望用户在资源管理器中发现文件并能够双击它们,或者您想要要隐藏的文件,仅供应用程序在后台使用。

如果您希望所有用户都可以在资源管理器中找到这些文件,您可能希望将它们放在c:\ users \ public中。您所要做的就是将它们放在该位置,默认安全性应该有效。

如果您希望向用户隐藏文件,您可能希望将它们放在c:\ programdata中。在这种情况下,当您创建文件时,默认安全性可能不正确,因此您需要将应用程序ACL作为文件。或者更好的方法是让您的安装程序在c:\ programdata下为您的应用程序创建一个目录结构,并让安装程序在每个目录上设置好的默认ACL - 然后您的应用程序不必抱歉在实际设置ACL时创建文件,只需在正确的位置创建文件。

在所有情况下,您都应该调用相应的Win32(或.Net Framework)函数来获取c:\ programdata或c:\ users \ public目录的路径。不要在你的应用程序中对这些路径进行硬编码 - 如果你进行硬编码,你会错过用户移动目录或以某种不常见的方式安装Windows的情况,并且你的应用程序将会中断。

答案 1 :(得分:0)

当您创建文件或将其写出后,我认为您应该能够修改“用户”组的权限以获得更多访问权限。看起来“创建者所有者”获得完全许可,“用户”组只能获得阅读权限。执行。

另一个选项可能是创建“TestDirectory”目录并将Users组设置为在安装期间具有完全访问权限。