Создание реестра

Я пытаюсь создать реестр, но он выдает следующее сообщение.

Доступ к разделу реестра «HKEY_LOCAL_MACHINE\Software\aspire» запрещен

И следующий мой код.

protected void CreateRegistry()
    {
        dtStartDate = DateTime.Now;

        string strUser = Environment.UserDomainName + "\\" + Environment.UserName;

        RegistrySecurity rs = new RegistrySecurity();
        //rs.AddAccessRule(new RegistryAccessRule("Administrator", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
        rs.AddAccessRule(new RegistryAccessRule(strUser, RegistryRights.FullControl, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow));

        RegistryKey regDate = null;

        try
        {
            regDate = Registry.LocalMachine.CreateSubKey("Software\\aspire", RegistryKeyPermissionCheck.Default, rs);

            if (regDate != null)
            {
                regDate.SetValue("Date", dtStartDate.ToString(strDateFormat));
                regDate.Close();
                MessageBox.Show("created");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }

    }

когда я выполняю один и тот же код в другой системе, код работает правильно.
потому что в этой системе не создан ни один пользователь. Но сейчас в этой системе я создал 2 пользователя из панели управления, и это происходит со мной. Обе системы работают на Windows 7.

Пожалуйста помоги

Спасибо


person Deepak    schedule 06.06.2012    source источник
comment
У вас могут быть веские причины для этого, но мне интересно, почему вы храните значения в реестре, почему бы вам не использовать какой-нибудь файл конфигурации?   -  person Asif Mushtaq    schedule 06.06.2012
comment
Вы запускали это как администратор? Вы не указываете пароль в своем коде, поэтому, если он не запускается от имени администратора, обычный пользователь не сможет вносить эти изменения, отсюда и исключение.   -  person Bali C    schedule 06.06.2012
comment
Не могли бы вы более конкретно?   -  person Deepak    schedule 06.06.2012
comment
@Deepak Более конкретно как? Балуск дал вам полный ответ.   -  person user207421    schedule 06.06.2012


Ответы (2)


Если вы используете Windows 7, запустите приложение в режиме администратора. если вы выполняете отладку из Visual Studio, запустите Visual Studio в режиме администратора.

person Rajesh Subramanian    schedule 06.06.2012
comment
Вы хотите сказать, что каждый пользователь/клиент, использующий мое приложение, должен запускать приложение от имени администратора? - person Deepak; 06.06.2012
comment
да. если вы получаете доступ к реестру на ПК с Windows 7. Вы должны указать это в файле манифеста приложения. - person Rajesh Subramanian; 06.06.2012
comment
Проект -> Добавить новый элемент -> Файл манифеста приложения и замените следующую строку на следующую ‹requestedExecutionLevel level=asInvoker uiAccess=false /› на ‹requestedExecutionLevel level=requireAdministrator uiAccess=false /› - person Rajesh Subramanian; 06.06.2012
comment
На самом деле не в реестре, а в ЧАСТИ РЕТИСТРАЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ЭТО защищено - установка программного обеспечения является сценарием администратора / ОПЫТНОГО ПОЛЬЗОВАТЕЛЯ, ОБЫЧНЫМ пользователям НЕ разрешено устанавливать программное обеспечение в Windows. - person TomTom; 06.06.2012
comment
я внес следующие изменения в файл манифеста приложения ‹requestedExecutionLevel level=requireAdministrator uiAccess=false /›, и он выполняется без отображения этого сообщения о разрешении. Но когда я проверяю реестр, реестр не создается. И если я меняю Registry.LocalMachine на Registry.CurrentUser, все работает нормально. - person Deepak; 06.06.2012

Либо а) запустите приложение с повышенными привилегиями, либо б) вместо этого используйте HKEY_CURRENT_USER, что в любом случае лучше, если только вам действительно не нужно устанавливать программное обеспечение для всех пользователей.

Если вы хотите, чтобы ваше приложение запрашивало права администратора по умолчанию, вам нужно добавить манифест и добавить.

A prompt will pop up upon execution.

person Jeff Watkins    schedule 06.06.2012
comment
Вы имеете в виду HKEY_CURRENT_USER? - person Bali C; 06.06.2012
comment
Я пытался установить права администратора программно, но это не помогло. - person Deepak; 06.06.2012
comment
Я подозреваю, что исполняемый файл, способный повышать свои собственные привилегии, был бы чрезвычайно опасен. Смотрите ответ ниже, как запустить приложение в режиме администратора. - person Jeff Watkins; 06.06.2012
comment
Пожалуйста, не отвечайте ниже. Порядок ответов регулярно меняется в зависимости от голосов. - person TomTom; 06.06.2012