如何更改或編輯除當前用戶以外的其他用戶的註冊表值? 我知道那個其他用戶的憑證。編輯其他用戶的註冊表項
回答
您可以模擬用戶,然後更改當前上下文的註冊表。這裏是C#和模擬一對夫婦的資源:
你想要做的是這樣的(僞):
using(var impersonation = new Impersonate(username,password))
{
ChangeRegistry(keys, values);
}
當模擬處置,你又回到了正在使用的用戶。 Here is an example implementation Impersonate類,實現IDisposable行爲像上面顯示的僞檢驗和here is another example。
Here is an example您如何更改註冊表值:
var registry = Registry.CurrentUser;
var key =
registry.OpenSubKey(
@"HKEY_CURRENT_USER\Some\Path\That\You\Want\ToChange", true);
key.SetValue(null, "");
Registry.CurrentUser.Flush();
更新
所以你需要以訪問HKCU
做的是,你還必須加載用戶配置文件。這是通過調用另一個稱爲LoadUserProfile
的Win32方法完成的。有一個complete example here,你可以使用,但我會在這裏包括重要的位。
首先,你需要包括Win32的方法是這樣的:使用塊
[DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LoadUserProfile(IntPtr hToken,
ref ProfileInfo lpProfileInfo);
[DllImport("userenv.dll", CallingConvention = CallingConvention.Winapi,
SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool UnloadUserProfile(IntPtr hToken,
IntPtr lpProfileInfo);
內,您的模擬,你需要做到以下幾點:
ProfileInfo profileInfo = new ProfileInfo();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.lpUserName = userName;
profileInfo.dwFlags = 1;
Boolean loadSuccess = LoadUserProfile(tokenDuplicate, ref profileInfo);
並在此之後,你應該能夠訪問HKCU
。完成後,您需要使用UnloadUserProfile(tokenDuplicate, profileInfo.hProfile);
卸載配置文件。
你有兩種選擇。您可以模仿該用戶,如果您擁有他們的憑據,Filip Ekberg會更好地證明這一點;或
HKCU只是HKEY_USERS
下的其中一個鍵的符號鏈接。如果你知道該用戶的SID,那麼你可以在那裏找到它。你可以這樣得到SID:
var account = new NTAccount("userName");
var identifier = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
var sid = identifier.Value;
更好的選擇是模擬。當你不知道用戶的憑證時,第二種選擇可能會更好。缺點是您需要管理權限才能寫入其他人的帳戶。
模擬不起作用,但sid很有用,但我與未經授權的訪問異常發生衝突,雖然UAC已關閉,而且我是管理員! –
@MSS,請嘗試請求提升權限。 –
它的工作,我的錯誤是,我已經打開閱讀的關鍵!錯誤: var key = Registry.Users.OpenSubKey(sid);正確的是:var key = Registry.Users.OpenSubKey(sid。true); !!! –
- 1. 編輯類 - 其他用戶的註冊表
- 2. 編輯註冊表項
- 3. 修改其他用戶註冊表
- 4. 編輯用戶註冊表單xml
- 5. 編輯註冊表
- 6. 如何讓註冊用戶使用Devise註冊其他用戶?
- 7. 註冊表項編輯vb6啓動
- 8. 編輯註冊表中Vb.net
- 9. C++ Windows註冊表編輯
- 10. 編輯註冊表值
- 11. 編輯windows註冊表
- 12. 編輯註冊表值
- 13. 訂購在其他表中有更多註冊表的用戶
- 14. 編輯註冊表項並用批處理文件打開註冊表
- 15. 註冊用戶在其他網站註冊Wordpress站點
- 16. 編輯與C#中的註冊表,但無法找到註冊表編輯器
- 17. Securesocial註冊註冊的其他領域
- 18. C#編輯註冊表不起作用
- 19. 使用VB編輯註冊表
- 20. 使用ini4j編輯Windows註冊表
- 21. 當用戶註銷時在註冊表中編輯用戶配置文件
- 22. 從其他項目註冊EntityManager
- 23. 與其他選項註冊頁面
- 24. 代表他人設計註冊用戶(發送註冊郵件)
- 25. 無法編輯Instagram客戶端註冊
- 26. django註冊註冊表單中的其他字段
- 27. 註冊表編輯器 - 進口的* .reg
- 28. 異常的註冊表編輯器
- 29. 註冊表更改權限刪除其他用戶權限
- 30. 確定用戶是否有權編輯註冊表?
非常感謝,但它沒有奏效,它改變了當前用戶的註冊表而不是模擬用戶! –
你確定模擬已經解決嗎?您可以嘗試打印出當前的用戶身份並查看其真實身份。此外,這是和ASP.NET應用程序還是Windows應用程序?如果它是一個Web應用程序,則需要允許模擬。 –
不,這是一個WPF應用程序。使用(ImpersonatedUser im = new ImpersonatedUser(「aaa」,Environment.MachineName,「1」)) { Registry.CurrentUser。CreateSubKey( 「TMP10」); Registry.CurrentUser.Flush(); } 它創建了當前用戶的密鑰,但沒有在'aaa':( –