Vă mulțumim pentru susținere

Visual Studio Setup Project - Setări pentru regiștri utilizatori

Încerc să mențin un proiect de instalare în Visual Studio 2003 (da, este o aplicație moștenită). Problema pe care o avem în acest moment este că trebuie să scriem intrări de registry la HKCU pentru fiecare utilizator de pe computer. Ei trebuie să fie în HKCU mai degrabă decât HKLM , deoarece acestea sunt setările implicite de utilizator și se schimbă pe utilizator. Sentimentul meu e asta

  1. Acest lucru nu este posibil
  2. Nu este ceva ce ar trebui să facă instalatorul, dar ceva ce ar trebui să facă aplicația (după toate ce se întâmplă atunci când un utilizator este creat după instalare?).

Având în vedere acest lucru, vreau să schimb cât mai puțin posibil în aplicație, așadar întrebarea mea este că este posibil să se adauge intrări de registry pentru fiecare utilizator dintr-un proiect de configurare Visual Studio 2003 ?

În acest moment, proiectul listează cinci taste rădăcină de registru ( HKEY_CLASSES_ROOT, HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , HKEY_USERS și User / Machine Hive). Nu prea știu nimic despre cheia de root a utilizatorilor și nu am văzut stupul User / Machine. Poate cineva să mă lumineze asupra a ceea ce sunt? Poate că mi-ar rezolva problema mai sus.

0
adăugat editat
mulțumesc pentru această întrebare
adăugat autor Danny G

4 răspunsuri

Mai întâi: Da, acesta este un lucru care aparține aplicației pentru o resonanță exactă pe care ați specificat-o: Ce se întâmplă după crearea unor noi profiluri de utilizatori? Sigur, dacă utilizați un domeniu, este posibil ca anumite lucruri să fie introduse în registru la crearea, dar acest lucru nu este cu adevărat un caz de utilizare. Aplicația trebuie să verifice dacă există setări și să utilizeze setările implicite dacă nu.

Acestea fiind spuse, este posibil să schimbați alți utilizatori chei prin HKEY_USERS stup.

Nu am nici o experiență cu proiectul de instalare Visual Studio 2003, deci aici este un cod de cod VBScript (care nu are nicio legătură) care ar putea să vă ofere o idee în care să se uite:

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

(Codul de courtesy de Jeroen Ritmeijer )

0
adăugat

Eu sunt parte la soluția mea cu această intrare pe MSDN (nu știu cum nu am putut găsi înainte).

Stânga utilizator / mașină Subcheiile și valorile introduse în acest stup vor fi instalate sub unitate HKEY_CURRENT_USER atunci când un utilizator alege "Just Me" sau HKEY_USERS treapta sau când un utilizator alege "Everyone" în timpul instalării.

Editor de registru

0
adăugat

În ciuda a ceea ce articolul MSDN spune despre Utilizator / Machine Hive, nu scrie pentru HKEY_USERS. Mai degrabă scrie HKCU dacă selectați Just Me și HKLM dacă selectați pe toată lumea.

Deci, soluția mea va fi să utilizez User / Machine Hive și apoi în aplicație verifică dacă intrările de registru sunt în HKCU și dacă nu, le copiază de la HKLM. Știu că probabil acest lucru nu este cel mai ideal mod de a face acest lucru, dar are cel mai puține schimbări.

0
adăugat

Cred că pentru că doriți să le setați pentru toți utilizatorii, sunteți pe un computer partajat, care probabil că rulează în cadrul unui domeniu?

AICI FII DRAGONI

Să spunem că Joe și Jane se înregistrează regulat pe computer, atunci fiecare va avea "registre".

Apoi, veți instala aplicația dvs., iar programul de instalare va folosi hack-uri uriașe și lucruri dezgustătoare pentru a stabili articole pentru HKCU.

Apoi, Bob va veni și va loga (el și 500 de alți oameni au conturi în domeniu și așa pot face acest lucru). Nu a mai folosit niciodată acest computer, deci nu are registru. Prima dată când se conectează, ferestrele îl creează pe unul, dar nu va avea loc.

Aplicația dvs. cade peste sau se comportă incorect, iar Bob se plânge cu voce tare despre acele produse cu rahaturi de la raynixon încorporate.

Răspunsul corect este să aveți doar câteva setări implicite în aplicația dvs., care le pot scrie în registru dacă nu le găsesc. Este o practică generală conform căreia aplicația dvs. nu ar trebui să depindă niciodată de registru și ar trebui să creeze lucruri după cum este necesar, pentru orice intrare în registry, nu doar pentru HKCU

0
adăugat