Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Проблемы с записью в реестр, на автозапуск


Автор: CasperSC 19.1.2010, 11:57
У меня такая проблема, когда приложение закрывается, то выполняется этот код.

Код

if (Properties.Settings.Default.AutoRun)
            {
                Microsoft.Win32.RegistryKey myKey =
    Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\", true);
                myKey.SetValue("MyProgramm", Application.ExecutablePath);
                Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\", true);
            }
            else
            {
                Microsoft.Win32.RegistryKey myKey =
    Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\", true);
                myKey.SetValue("MyProgramm", Application.ExecutablePath);
                myKey.DeleteValue("MyProgramm");
            }
        }


 В учётной записи администратора, всё нормально, а вот в учётке с ограничениями, вылетает ошибка:



Код
Подробная информация об использовании оперативной 
(JIT) отладки вместо данного диалогового 
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.Security.SecurityException: Запрошенный доступ к реестру запрещен.
   в System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
   в Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
   в WindowsFormsApplication1.MainForm.AutoRunCreateOrDelete()
   в WindowsFormsApplication1.MainForm.SaveAllSettings()
   в WindowsFormsApplication1.MainForm.MainForm_FormClosing(Object sender, FormClosingEventArgs e)
   в System.Windows.Forms.Form.OnFormClosing(FormClosingEventArgs e)
   в System.Windows.Forms.Form.RaiseFormClosingOnAppExit()
   в System.Windows.Forms.Application.ExitInternal()
   в System.Windows.Forms.Application.Exit(CancelEventArgs e)
   в System.Windows.Forms.Application.Exit()
   в WindowsFormsApplication1.MainForm.pictureBox1_Click(Object sender, EventArgs e)
   в System.Windows.Forms.Control.OnClick(EventArgs e)
   в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Ошибкой завершилась сборка со следующим параметром Zone:
MyComputer


************** Загруженные сборки **************
mscorlib
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3603 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
mscorlib.resources
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3603 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
AlarmClock-Old
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.0.0
    CodeBase: file:///D:/MyProgram%20C%23/MyProgram.exe
----------------------------------------
System.Windows.Forms
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
f-44gdi9
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms.resources
    Версия сборки: 2.0.0.0
    Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.






Как это исправить? В Delphi например таких проблем нету, если в качестве ветви реестра использовать HKEY_CURRENT_USER

Автор: PashaPash 19.1.2010, 12:12
Цитата(CasperSC @  19.1.2010,  11:57 Найти цитируемый пост)
Как это исправить? В Delphi например таких проблем нету, если в качестве ветви реестра использовать HKEY_CURRENT_USER 

Тогда зачем в C# лезть в LocalMachine, в 6-й строчке?

Да, и ключи нужно закрывать smile

Автор: CasperSC 19.1.2010, 12:25
[QUOTE=PashaPash,19.1.2010,  12:12]
Цитата(CasperSC @  19.1.2010,  11:57 Найти цитируемый пост)
Как это исправить? В Delphi например таких проблем нету, если в качестве ветви реестра использовать HKEY_CURRENT_USER 

Тогда зачем в C# лезть в LocalMachine, в 6-й строчке?


А-а-а-а, так это я просто код переписывал с LocalMashine на CurrentUser и не увидел. Нда, сейчас попробую исправить. И вообще не понял вопроса сначало

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)