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