2012-12-03 24 views
1

我在其他一些線程中詢問過這個問題,並獲得了訪問遠程註冊表的鏈接。但是我現在面臨的問題是我無法將任何值添加到註冊表中。我試着用下面的代碼一些值添加到註冊表中的現有條目,但在遠程註冊表沒有做任何事情:什麼是使用OpenRemoteBaseKey所需的權限?

RegistryKey rk; 
rk = RegistryKey.OpenRemoteBaseKey(
RegistryHive.CurrentUser, ReadServerName()); 
regkey = rk.OpenSubKey(LeafRegistry.LeafRoot + "\\sim\\NewView\\"); 
regkey.SetValue("runsystem", SIMserver); 

UPDATE

RegistryHive.LocalMachine將在這裏工作,我可以打開並做所有的操作,但爲什麼RegistryHive.CurrentUser?我在說的是在上面的代碼中,我將獲得'rk'的值,但是我無法獲得regkey的值,它將變爲null,我認爲CurrentUser OpenSubKey不起作用。

UPDATE

當我深入分析,我看到了,除了這個特殊的鍵,其它所有按鍵都可以訪問。我想知道這個特定的鍵是怎麼回事,我右鍵點擊後也檢查了權限,但看不到它?

回答

0

當您嘗試通過網絡更改遠程計算機上的註冊表值時,在大多數情況下,您幾乎可以肯定需要權限。而且,在很多情況下,即使您可以修改註冊表值,也可以通過組策略刷新並恢復。

這可能是因爲有註冊表中的某些部分,你是從編輯限制,

如果沒有管理員privelages那麼我想你會來脫膠。

+0

我有管理員權限,我將我的用戶標識添加到遠程系統的管理員組 – ponting

+0

RegistryHive.LocalMachine將在這裏工作,我可以打開並執行所有操作,但爲什麼RegistryHive.CurrentUser無法正常工作? – ponting

+0

我在說的是在上面的代碼給出的問題,我會得到'rk'的價值,但我不能得到價值的regkey將成爲空,我認爲是因爲upsuer OpenSubKey不起作用 – ponting

0

這是行不通的。假設你的程序正在訪問遠程機器的用戶帳戶未在遠程機器上登錄。 Windows應該做什麼?實際上,OpenRemoteBaseKey在內部調用的RegConnectRegistry的文檔甚至沒有列出HKEY_CURRENT_USER作爲允許的參數。

+0

我有管理員權限,我添加了我的用戶標識到遠程系統的管理員組 – ponting

+0

這是無關緊要的。儘管MSDN有關OpenRemoteBaseKey的說法,但無法遠程打開HKEY_CURRENT_USER,請參閱RegConnectRegistry上面的鏈接。您可以嘗試打開HKEY_USERS /(您的用戶的SID),但只有當您的用戶已經登錄到遠程計算機上時,這纔會起作用。 RegConnectRegistry不會爲您加載用戶的配置單元。您可能需要重新考慮您的方法。 –

+0

我在說的是在給出的上述代碼中,我將獲得'rk'的值,但是我無法獲得regkey的值,它將變爲null,我認爲對於currentsuer OpenSubKey不起作用 – ponting

相關問題