Сведения о вопросе

Htmlщик

16:03, 1st July, 2020

Теги

Проект Установки Visual Studio-Параметры Реестра Для Каждого Пользователя

Просмотров: 431   Ответов: 4

Я пытаюсь поддерживать проект установки в Visual Studio 2003 (да, это устаревшее приложение). Проблема, с которой мы столкнулись на данный момент, заключается в том, что нам нужно записать записи реестра в HKCU для каждого пользователя на компьютере. Они должны быть в HKCU , а не в HKLM , потому что они являются настройками пользователя по умолчанию, и они действительно меняются для каждого пользователя. Мое ощущение заключается в том, что

  1. Это невозможно
  2. Это не то, что должен делать установщик, но то, что должно делать приложение (в конце концов, что происходит, когда Профиль пользователя создается после установки?).

Учитывая это, я все еще хочу изменить как можно меньше в приложении, поэтому мой вопрос заключается в том, можно ли добавить записи реестра для каждого пользователя в проекте установки Visual Studio 2003 ?

И, на данный момент проект перечисляет пять корневых ключей реестра (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , HKEY_USERS и User/Machine Hive). Я действительно ничего не знаю о корневом ключе Users и не видел User/Machine Hive. Может ли кто-нибудь просветить меня на этот счет? Возможно, они могли бы решить мою проблему выше.



  Сведения об ответе

DO__IT

18:03, 1st July, 2020

Во-первых: да, это то, что относится к приложению для точного резонанса, который вы указали: что происходит после создания новых профилей пользователей? Конечно, если вы используете домен, можно внести некоторые вещи в реестр при создании, но это не совсем тот случай использования. Приложение должно проверить, есть ли seetings и использовать настройки по умолчанию, если нет.

Тем не менее, это IS возможно изменить ключи других пользователей через HKEY_USERS Hive.

У меня нет опыта работы с проектом установки Visual Studio 2003, поэтому вот немного (совершенно не связанного) кода VBScript, который может просто дать вам представление, где искать:

const HKEY_USERS = &H80000003
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = ""
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing"
For Each subkey In arrSubKeys
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944
Next

(Код любезно предоставлен Йеруном Ритмейером )


  Сведения об ответе

park

18:03, 1st July, 2020

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

ЗДЕСЬ БУДУТ ДРАКОНЫ

Допустим, Джо и Джейн регулярно заходят в компьютер, и тогда у каждого из них будет 'registries'.

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

THEN, Боб придет и войдет в систему (он и еще 500 человек имеют учетные записи в домене и поэтому могут это сделать). Он никогда раньше не пользовался этим компьютером, поэтому у него нет реестра. В первый раз, когда он входит в систему, windows создает его, но у него не будет вашей настройки.

Затем ваше приложение падает или ведет себя неправильно, и Боб громко жалуется на эти Дрянные продукты от raynixon incorporated.

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


  Сведения об ответе

VCe znayu

18:03, 1st July, 2020

Я нахожусь на полпути к своему решению с этой записью на MSDN (не знаю, как я не мог найти ее раньше).

Пользователь / Машина Hive
Подразделы и значения, введенные под этим hive, будут установлены под HKEY_CURRENT_USER hive, когда пользователь выберет "Just Me" или HKEY_USERS hive, или когда пользователь выберет "Everyone" во время установки.

Редактор реестра архив MSDN статьи


  Сведения об ответе

LIZA

18:03, 1st July, 2020

Несмотря на то, что архив MSDN статей MSDN статьи говорит о пользователе / машине Hive, он не пишет в HKEY_USERS. Скорее он пишет в HKCU, если вы выберете только меня, и HKLM,если вы выберете всех.

Поэтому мое решение будет состоять в том, чтобы использовать пользователя/машину Hive, а затем в приложении он проверяет, находятся ли записи реестра в HKCU, а если нет, копирует их из HKLM. Я знаю, что это, вероятно, не самый идеальный способ сделать это, но он имеет наименьшее количество изменений.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться