У меня есть проект, который ссылается на другой проект, чтобы использовать некоторые части кода.Одним из проектов является консольное приложение (то есть тип проекта), но оно состоит из значительной базы кода.Другое приложение 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