2010-06-15 111 views
1

在哪里可以创建/修改/删除注册表项以在Windows 7注册表中的用户之间共享数据?这两个用户都是非管理员,不应该要求管理员权限。Windows 7通过注册表在用户之间共享数据

我正在使用的应用程序使用注册表从userA写入密钥,然后userB可以读取/修改/删除它。这两个用户都不具有管理员权限,因此无法更改此设置。

是否有官方的MSDN指南,指导如何在Windows 7中使用注册表?描述正确使用注册表的任何链接都是有用的。

回答

0

该注册表用于编写配置设置,而不是用于在用户之间共享数据,您真的将其用于错误目的。

但是,如果您必须在注册表中唯一有意义的位置,那么可以在HKEY_LOCAL_MACHINE配置单元的Software\yourapp中进行配置,但我相当肯定在那里没有任何地方可以正常写入用户默认情况下。
如果可以,您可以创建该密钥,然后更改users组的权限,以使其具有完全访问权限。

This维基文章可能有助于了解如何最好地使用注册表。

0

在Windows 7上,对HKLM的访问仅适用于以管理员身份运行的应用程序。如果应用程序上没有任何清单,则会进行虚拟化,即写入不同的每个用户存储。

我认为你应该在不是每个用户的应用程序位置使用一个配置文件,例如%PROGRAMDATA%,并且你的安装/安装(它可能以管理员身份运行)写一个单一的密钥,这个文件在哪里。非管理员用户可以在使用应用程序时轻松读取和写入文件。

0

注册表并不是真正做到这一点的正确方法。你能给我们一些关于你实际上想要做什么的更多细节吗?

用户是否同时登录?在这种情况下,某种进程间通信(IPC)机制可能会起作用。例如:命名管道,共享内存,套接字等。

如果没有,您是否会有一个进程始终运行(即服务)?这可以用作一种投递机制。

如果你有一个安装程序,你可以创建一个两个用户都可以访问的目录(为了简单起见,把它们放在同一个组中)。然后你可以在那里放置消息文件。

简而言之:注册表实际上是为长期配置设置而设计的。短暂的交流确实应该以其他方式完成。

2

您不能在没有提升的情况下访问HKLM,因此您无法完成您所描述的内容。

我建议以下几点: 1.选择其他数据存储,例如:数据库,文件等,您的所有用户都可以访问。 2.创建一个以LocalSystem身份运行的Windows服务(让RW访问HKLM),并使您的应用程序通过命名管道/ COM /套接字与服务对话。