Visual Studio Setup Project - Per User Registry Settings

stemmen
16

Ik ben op zoek naar een Setup Project in stand te houden Visual Studio 2003(ja, het is een legacy applicatie). Het probleem dat we hebben op dit moment is dat we nodig hebben om het register te schrijven om HKCUvoor elke gebruiker op de computer. Ze moeten in de HKCUplaats van HKLM, omdat ze de standaard gebruikersinstellingen, en ze hoeven veranderen per gebruiker. Mijn gevoel is dat

  1. Dit is niet mogelijk
  2. Dit is niet iets wat de installateur zou moeten doen, maar iets wat de toepassing moet doen (na alles wat er gebeurt wanneer een gebruikersprofiel wordt gemaakt na de installatie?).

Met dat in gedachten, ik nog steeds wil zo weinig mogelijk in de applicatie veranderen, dus mijn vraag is, is het mogelijk om registry entries toe te voegen voor elke gebruiker in een Visual Studio 2003setup-project?

En op het moment dat het project worden vijf registersleutels grondtonen ( HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, en User / Machine Hive). Ik weet niet echt niets over de gebruikers root key, en hebben niet gezien User / Machine Hive. Kan iemand mij verlichten op wat ze zijn? Misschien konden ze mijn probleem boven op te lossen.

De vraag is gesteld op 03/08/2008 om 21:35
bron van user
In andere talen...                            


4 antwoorden

stemmen
1

Ik ben halverwege mijn oplossing met dit bericht op MSDN (weet niet hoe ik het niet eerder kon vinden).

User / Machine Hive
subsleutels en waarden onder deze bijenkorf ingevoerd, wordt onder de HKEY_CURRENT_USER worden geïnstalleerd wanneer een gebruiker kiest "Just Me" of de HKEY_USERS bijenkorf of wanneer een gebruiker ervoor kiest "Iedereen" tijdens de installatie.

Register-editor

antwoordde op 03/08/2008 om 21:45
bron van user

stemmen
5

Ten eerste: Ja, dit is iets dat thuishoort in de applicatie voor de exacte Reson u opgegeven: Wat gebeurt er na nieuwe gebruiker worden aangemaakt? Tuurlijk, als je gebruik maakt van een domein is het mogelijk om wat spullen te zetten in het register op de schepping, maar dit is niet echt een use case. De aanvraag dient te controleren of er seetings en de standaardinstellingen gebruiken wanneer niet.

Dat gezegd zijnde, is het mogelijk IS aan andere gebruikers Keys veranderen door de HKEY_USERS Hive.

Ik heb geen ervaring met de Visual Studio 2003 Setup Project, dus hier is een beetje van (totaal ongerelateerde) VBScript-code die net een idee waar te kijken zou kunnen geven u:

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

(Code Met dank aan Jeroen Ritmeijer )

antwoordde op 03/08/2008 om 21:48
bron van user

stemmen
5

Ik veronderstel dat omdat u wilt instellen voor alle gebruikers, dat je op een soort van gedeelde computer, die waarschijnlijk wordt uitgevoerd onder een domein?

HIER ZIJN DRAKEN

Laten we zeggen dat Joe en Jane regelmatig inloggen op de computer, dan zullen ze elk 'registers'.

U zult installeer dan uw app, en de installateur zal reus hacks en walgelijke dingen om items in te stellen onder HKCU voor hen in dienst.

Dan zal bob mee en meld u aan (hij, en 500 andere mensen in het domein en zo kan dit doen). Hij heeft nog nooit deze computer eerder gebruikt, dus hij heeft geen register. De eerste keer dat logt hij in, ramen zorgt hem, maar hij zal uw instelling niet hebben.

Uw app valt dan over of gedraagt ​​zich onjuist, en bob klaagt luid over die waardeloze producten van raynixon opgenomen.

Het juiste antwoord is om gewoon enkele standaardinstellingen in uw app, waardoor ze kunnen schrijven naar het register als het hen niet vinden. Het is algemeen goede praktijken die uw app nooit moet afhangen van het register en moet dingen te creëren als nodig is, voor een register binnenkomst, niet alleen HKCU, hoe dan ook

antwoordde op 03/08/2008 om 22:17
bron van user

stemmen
1

Ondanks wat de MSDN-artikel zegt over User / Machine Hive, is het niet schrijven naar HKEY_USERS. Veeleer schrijft HKCU als je Just Me en HKLM selecteren als u iedereen te selecteren.

Dus mijn oplossing zal zijn om de User / Machine Hive gebruiken, en vervolgens in de applicatie controleert of de registry entries in HKCU en zo niet, kopieert ze uit HKLM. Ik weet dat dit waarschijnlijk niet de meest ideale manier van doen, maar het heeft de minste hoeveelheid veranderingen.

antwoordde op 03/08/2008 om 23:34
bron van user

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