Я пытаюсь удалить некоторые ключи реестра (элементы автозагрузки) через командную строку, и, хотя я могу удалить из HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, я не могу ничего удалить из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ Запустить.
Я даже создал некоторые временные ключи там через regedit.exe, но даже они не могут быть восстановлены через командную строку. Поэтому я искал здесь похожие темы и, очевидно, гуглил. Обычно это происходит потому, что:
- Командная строка не запускается от имени администратора. Это не так, поскольку у меня определенно есть права администратора в запущенном окне cmd.
- Разрешения реестра блокируют удаление. Опять же, это не тот случай, здесь. Я вручную изменил разрешение через regedit.exe, и теперь я владелец HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run с полным контролем моей учетной записи.
Конкретное сообщение об ошибке, полученное из командной строки:
ERROR: The system was unable to find the specified registry key or value.
И все же ключ определенно существует в том месте, откуда я пытаюсь удалить его, и даже regedit показывает его там. Я также могу удалить его с помощью regedit без проблем.
У кого-нибудь есть какие-либо подсказки, что проверить?
Хорошо, поэтому, когда я писал этот пост, я наткнулся на что-то действительно странное. Казалось бы, есть две версии HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run.
Я понятия не имею, как это вообще возможно, но когда я копирую имя ключа в regedit, они оба идентичны, и все же они отображают разные элементы. Первый из них в порядке, и кажется, что reg.exe пытается найти и удалить ключ в этом месте, и поэтому он выдает ошибку. Второй - проблемный, где существует ключ, который мне нужно удалить через командную строку.
Однако, когда я добавляю идентичный ключ в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, он записывается в "правильное" расположение, и я также могу удалить его через командную строку.
Хорошо, я думаю, что знаю, в чем проблема сейчас. "Правильное" расположение отображается при запуске собственной 64-разрядной версии regedit, а проблемное отображается только при запуске 32-разрядной версии regedit.
РЕШЕНИЕ:
Используйте %windir%\SysWOW64\reg.exe
для управления 32-разрядными записями реестра и %windir%\System32\reg.exe
для управления 64-разрядными записями реестра. Я собираюсь провести строгий разговор с авторами программы о том, почему они вставляют свой ключ запуска в 32-битное требование в 64-битной системе.