2010-06-15 110 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 /套接字與服務對話。