Visual Studio Setup Project - Per настройки реестра пользователей

голоса
16

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

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

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

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

Задан 03/08/2008 в 21:35
источник пользователем
На других языках...                            


4 ответов

голоса
5

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

ЗДЕСЬ БЫТЬ DRAGONS

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

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

ТОГДА, боб придет и войти в систему (он и 500 других людей имеют счета в домене и поэтому может это сделать). Он никогда не использовал этот компьютер перед тем, чтобы он не имеет никакого реестра. Первый раз, когда он входит в системе, окно создает ему один, но он не будет иметь ваши настройки.

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

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

Ответил 03/08/2008 d 22:17
источник пользователем

голоса
5

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

Это, как говорится, можно изменить другие пользователи ключей через HKEY_USERS улья.

У меня нет опыта работы с проектом Visual Studio 2003 Setup, поэтому здесь немного (полностью несвязанным) 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

(Код Предоставлено Йерун Ritmeijer )

Ответил 03/08/2008 d 21:48
источник пользователем

голоса
1

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

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

Ответил 03/08/2008 d 23:34
источник пользователем

голоса
1

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

Пользователь / Machine ульи
подразделы и значение , введенные в соответствии с настоящим ульи будут установлены в кусте HKEY_CURRENT_USER , когда пользователь выбирает «Just Me» или улое HKEY_USERS или когда пользователь выбирает «Все» во время установки.

Редактор реестра

Ответил 03/08/2008 d 21:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more