2011-05-13 46 views
1

我已對應用程序進行了一些更改,以允許應用程序在Windows 7中繼續運行。以前,應用程序將設置並從Registry.LocalMachine.OpenSubKey("SOFTWARE", True)中獲取,但隨着Windows 7的出現必須更改。據微軟稱,「」什麼導致我的寫入註冊表崩潰,並顯示錯誤消息「系統資源不足以完成請求的服務」。

昏暗鍵的RegistryKey'是在Registry.CurrentUser.OpenSubKey指着Microsoft.Win32.RegistryKey

我的註冊表項從建(‘軟件’,真))) : ExecutionArgs.ApplicationKey(Registry.CurrentUser.OpenSubKey("SOFTWARE", True))

我的變量是:

key.Name = "HKEY_CURRENT_USER\SOFTWARE\MyApplication\Application Parameters" 
key.SubKeyCount = 0 
key.ValueCount = 5 

Dim byts() As Byte ' This byte array has {Length=1965879} 

key.SetValue("Constants", byts) ' 

這死與錯誤信息

"Insufficient system resources exist to complete the requested service." 

我包括似乎與我有關的數據,如果更多是必要的,請告知。

有沒有人反對過這個能克服它?

+4

你真的不應該把幾乎2MB的數據放到註冊表中。這聽起來像是微軟同意的。 – dlev 2011-05-13 15:28:07

+1

我完全同意,我繼承了這一點,並試圖幫助解決它,直到我有時間去理解現有的註冊條目並存儲在內存流或某些類似的結構中。我的問題是,當存儲到LocalMachine時有效,但在存儲到CurrentUser時不起作用。 – 2011-05-13 15:32:02

+2

不夠公平,不好意思。不確定如何克服它,但如果您已經準備好更新代碼,那麼您可能只想咬緊牙關,編寫代碼以便在更合理的地方存儲和檢索數據。另一種選擇是分解數據並將其存儲在多個值中(例如Constants1,Constant2等) – dlev 2011-05-13 15:34:51

回答

0

顯然,我的問題的根本原因和解決方案是,在Windows 7中,WPF應用程序無法直接以管理員身份運行。

我後來從將數據存儲在註冊表中更改爲將其存儲在內存中。

+0

這不僅限於Windows 7的WPF應用程序。這來自Windows Vista中的UAC功能。它可以被禁用,但即使如此,非管理員用戶也不能寫入本地機器註冊表項。即使在較舊的Windows版本上也沒有。即使不是管理員,當前用戶註冊表項始終可由當前用戶寫入。這對於WPF應用程序來說並沒有什麼不同。 – 2011-05-19 19:55:16

+0

我沒有說它僅限於Windows 7,但它在Windows 7中對我來說是一個問題。不,當前用戶不能從WPF應用程序寫入。我已經試過這個廣泛的,它不會工作。 – 2011-05-19 20:43:33

相關問題