[英]Registry read/write in windows 7 using c# code
我有一個Windows C#應用程序,當用戶運行它時,我想將當前時間保存為某個注冊表中的登錄時間,以及當他關閉時作為注銷時間。當我嘗試時,它給了我請求的注冊表訪問權限,不允許例外。曾嘗試授予該注冊表權限,但仍收到該異常。這是我嘗試過的代碼
RegistrySecurity rs = new RegistrySecurity();
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName;
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow));
RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SYSTEM", true).OpenSubKey("Test", true);
Rkey.SetAccessControl(rs);
我也嘗試使用app.manifest來強制每次以admin身份運行應用程序,但我想保留它作為最后的選擇。 那么還有其他解決方案來讀取/寫入注冊表嗎?
IMO,您的應用程序需要以特權運行。 嘗試以管理員身份運行Visual Studio。
我只是在我的計算機(Windows 7 64位)上以Window Form
運行代碼。 我對此沒有任何問題(甚至可以刪除AddAccessRule
行)。
因此,問題不在於代碼本身。 您是否嘗試使用與運行代碼相同的用戶來手動更改registry
的值? 您從哪個地方(硬盤,網絡驅動器或Internet ..)運行代碼? 我知道從網絡驅動器運行它會帶來問題,請告訴我,也許我可以為您提供進一步的幫助
要訪問HKLM(您正在執行的操作)需要具有管理權限
@Hitesh:您需要將MANIFESTUAC設置為“ requireAdministrator”
在Visual Studio中,可通過以下方法完成:項目屬性->鏈接器->清單文件,並設置:
自Windows Vista以來,PS UAC就已經存在...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.