Я работаю над установщиком для нашего приложения. Программа установки вносит некоторые изменения в раздел реестра HKEY_CURRENT_USER \ Software \ Company \ AppName, который приложение затем ищет при первом запуске. Затем приложение выполняет разные действия в зависимости от найденных ключей реестра.
Это отлично работает, пока вы не попытаетесь установить приложение как учетную запись пользователя (т.е. не администратора) в Windows 7 (и, возможно, в Vista, я еще не тестировал это).
Когда пользователь пытается установить приложение, Windows получает учетные данные администратора. Это означает, что любые изменения HKCU в реестре вносятся в реестр администратора, а не реестр запускающего пользователя. Таким образом, ключи не видны приложению при первом запуске под учетной записью пользователя.
Мы не можем быть единственными людьми, чей установщик должен взаимодействовать с устанавливаемым приложением. Нет возможности надежно использовать реестр для этого?
Мы не можем полагаться на то, что пользователь запустит приложение после его установки, поэтому передача информации в качестве параметра командной строки не является жизнеспособным решением. Единственный способ, которым я могу это сделать, - это заставить установщик вызывать утилиту от имени исходного пользователя, которая сама получает или устанавливает ключ реестра; это кажется немного глупым обручем, через который приходится перепрыгивать.
Изменить: приложению необходимо удалить ключи после их использования, поэтому я не могу просто поместить их в HKEY_LOCAL_MACHINE.