Используется ли один и тот же реестр Windows для всех профилей пользователей?

Используется ли один и тот же реестр Windows для всех профилей пользователей?

У меня есть два профиля пользователя на моем ПК с Windows 10, профиль разработчика и обычный профиль. В профиле разработчика я запустил файл, .regчтобы добавить элемент контекстного меню, который открывает экземпляр Windows Terminal с активной подсказкой Git Bash.

К моему удивлению, контекстное меню в другом профиле Windows также показало новый пункт меню, но при нажатии на него появилась ошибка, в которой говорилось, что не удается получить доступ к указанному пути или файлу. Это потому, что у меня не установлен Windows Terminal в обычном профиле. А удаление соответствующих ключей реестра в обычном профиле также удаляет пункт меню из контекстного меню в профиле разработчика.

Является ли один и тот же реестр Windows общим для двух профилей и причиной этого? Если да, то как мне сделать отдельный реестр для каждого профиля пользователя?

Регистрационный файл:

Windows Registry Editor Version 5.00
    
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal]
@="Open Windows Terminal Here"
"Icon"="%USERPROFILE%\\AppData\\Local\\WTerminal\\terminal.ico"
        
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal\command]
@="wt new-tab --profile \"Git Bash\" --startingDirectory ."

решение1

И да, и нет. HKEY_LOCAL_MACHINEявляется общим; HKEY_CURRENT_USERявляется частным для каждого пользователя.

Между тем HKEY_CLASSES_ROOT — этовиртуальныйдерево, которое на самом делеобъединенный видкак для каждого пользователя, HKCU\Software\Classesтак и HKLM\Software\Classesдля деревьев. (Это пережиток Windows 9x, в которой не было разделения.)

Записи, выполненные в HKCR, будут отправлены либо в личный, либо в системный реестр в зависимости от ваших прав, а также в зависимости от того, был ли обновляемый ключ изначально загружен из HKCU или HKLM.

Чтобы иметь ассоциации файлов для каждого пользователя, поместите их HKEY_CURRENT_USER\Software\Classesвместо использования HKEY_CLASSES_ROOT. Аналогично, чтобы создать общесистемные ассоциации, поместите их в HKLM.

решение2

Да, есть один реестр. Реестр имеет несколько реальных ульев и несколько «виртуальных» ульев. Два самых важных реальных улья — это HKEY_LOCAL_MACHINEи HKEY_USERS. Как подразумевает последний, он содержит значения для нескольких пользователей.

Now HKEY_CURRENT_USER— это виртуальное отображение одного HKEY_USERSподключа, грубо говоря, ключа пользователя, который запустил процесс. Следовательно, разные процессы могут иметь разные HKEY_CURRENT_USERотображения. Аналогично, HKEY_CLASSES_ROOTэто также виртуальное представление, сформированное путем слияния HKEY_LOCAL_MACHINEи этого HKEY_USERSподключа.

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

Связанный контент