2013-03-06 44 views
4

註冊表值,其內容在Windows 7無法讀取我有以下的C#代碼在Windows 8

object obj = Registry.LocalMachine.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA", (long)1); 

它完美的Windows 7管理員/非管理員帳戶從註冊表中的UAC狀態。 它總是返回我在Windows 8下提供的默認值。 註冊表項在那裏。我可以用regedit看到它的價值。但C#代碼不會讀取它。任何人都可以說出原因嗎?它是一個.net 4應用程序。該用戶帳戶是未上架管理員。

+3

「不讀它」是什麼意思?任何異常,意外的結果......? – ken2k 2013-03-06 10:54:02

+0

聽起來像是它正被操作系統阻止。您是否要求在代碼中訪問註冊表的那部分權限? – 2013-03-06 11:14:30

+0

這會幫助你。請參閱http://stackoverflow.com/questions/12298199/c-sharp-read-registry-windows-8 – 2013-03-06 11:15:21

回答

0

您需要至少需要管理權限才能默認訪問註冊表。 Windows 8開發人員可能認爲保持這種方式更安全。

+1

不,你不需要管理員權限來閱讀註冊表。如果你做到了,那麼如何工作?試想一下,非管理員用戶無法讀取註冊表的世界。 – 2013-08-25 20:29:23

+0

越來越多的人看到來自擁有1點信譽的用戶的StackOverflow的愚蠢無稽之談。他們就像垃圾郵件發送者。 – Elmue 2015-07-09 16:21:36

3

它返回默認值(在Windows 7和Windows 8上)。以下是在Windows 7和Windows 8上讀取正確的註冊表值的代碼,不需要以管理員身份運行。

 object obj = Registry.GetValue( 
      @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\", 
      "EnableLUA", 
      (long)1); 

請注意,我們所說的GetValue方法上Registry,而不是Registry.LocalMachine,並且我們通過鍵和值的名稱作爲兩個單獨的參數。

相關問題