我有一個引用另一個項目的項目,以便利用代碼的某些部分。其中一個項目是一個控制檯應用程序(即項目類型),但由一個重要的代碼庫組成。另一個是引用此控制檯應用程序的GUI應用程序。這樣做的原因是,應用程序可以作爲控制檯應用程序或GUI應用程序運行。控制檯和GUI應用程序之間的註冊表項訪問差異
當GUI應用程序運行時,它絕對可以訪問註冊表,但是當我運行控制檯版本時,它訪問與GUI應用程序相同的代碼,但無法安全地訪問註冊表項。我假設GUI和控制檯應用程序都將通過相同的用戶運行。
這裏是什麼失敗(由隱藏具體細節的變化):
String user = Environment.UserDomainName + "\\" + Environment.UserName;
RegistrySecurity rs = new RegistrySecurity();
rs.AddAccessRule(new RegistryAccessRule(user, RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.WriteKey | RegistryRights.FullControl, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow));
mapsynckey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\AppPath\\AppName\\");
UserName = mapsynckey.GetValue("user").ToString();
Password = mapsynckey.GetValue("pass").ToString();
SyncFolderPath = mapsynckey.GetValue("syncfolderpath").ToString();
忽略的訪問權限,我只是在嘗試每一個因此隨機混合物。 我收到的錯誤是:
訪問註冊表項 'HKEY_LOCAL_MACHINE \ SOFTWARE \ APPPATH \ AppName的' 被拒絕
這裏的其他事情。我無法在註冊表中的任何位置找到條目,甚至無法在64位部分找到條目。但是,我將註冊表項的詳細信息加載到顯示正常的應用程序中,但如果我瀏覽註冊表,它們不在那裏。
我完全難住了,我已經花了最後3個小時的時間對此進行了處理,並且不知道發生了什麼。
at ApplicationSettings..ctor() in C:\Projects\MapSync\MapSyncConsole\ApplicationSettings.cs:line 34
at ApplicationSettings.get_Instance() in C:\Projects\MapSync\MapSyncConsole\ApplicationSettings.cs:line 47
at MainApplication..ctor(Boolean forceDownload) in C:\Projects\MapSync\MapSyncConsole\MainApplication.cs:line 27
at MapSyncConsole.Program.Main(String[] args) in C:\Projects\MapSync\MapSyncConsole\Program.cs:line 21
什麼是堆棧跟蹤? – SLaks 2010-07-06 13:44:22
添加爲您的樂趣。 – Kezzer 2010-07-06 13:47:32
也許是因爲控制檯和表單版本的「AppPath」和「AppName」不同? – 2010-07-06 13:52:48