Ключи реестра не сохраняются после перезагрузки компьютера - PullRequest
2 голосов
/ 03 мая 2011

Я создал приложение, которое должно помнить некоторые значения (состояние (отмечено / не отмечено) некоторых флажков).Проблема заключается в следующем:

Если я установлю / сниму флажки и перезапущу приложение, все в порядке.Если я установлю / сниму флажки и перезапущу компьютер, при запуске (я запускаю с активированными окнами) приложение не запоминает фактические значения, но значения до этого.

Теперь вот странная часть.Если я закрою приложение по второму сценарию и снова открою его, значения будут установлены правильно (даже если я не изменяю их).

Также: если я установлю / сниму флажки и перезапущу, но неустановить флажок запуска с Windows, если я открываю приложение после запуска Windows, все в порядке.

Единственное неправильное время - это когда Windows запускает его самостоятельно.

Вот начало сWindows часть программы:

private void RunStartup(Boolean RunOnStartup)
    {
        Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
        if (RunOnStartup == true)
        {
            key.SetValue("app", Application.ExecutablePath.ToString());
        }
        else
        {
            key.DeleteValue("app", false);
        }
    }

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Несколько вещей, чтобы уточнить ваш вопрос:

  1. Где в реестре вы храните данные между казнями? Все в HKCU?

  2. Когда вы сказали, что он запоминает «значения до этого», вы имели в виду последний запуск? Или, если вы повторяете процесс «изменить / перезапустить приложение / изменить / перезапустить приложение» более одного раза перед перезагрузкой, всегда ли он запоминает второй-последний набор значений?

  3. Вы перезагружаете компьютер с уже открытым приложением? Возможно, вы неправильно сохраняете состояние при завершении работы Windows?

Одна вещь, которую можно попробовать здесь, это добавить некоторые записи, например, log4net, к той части вашего кода, которая выполняет восстановление и проверяет, что вы фактически читаете из одного и того же места каждый раз.

0 голосов
/ 03 мая 2011

Возможно ли, что после запуска компьютера программа будет работать под другим именем (т. Е. С системной учетной записью, поскольку в это время ни один пользователь не вошел в систему)?

В этом случае Registry.CurrentUser... будетотличаться от того, когда вы запускаете программу в интерактивном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...