
Προσπαθώ να διατηρήσει ένα έργο εγκατάστασης σε `Visual Studio 2003`(ναι, είναι μια εφαρμογή παλαιού τύπου). Το πρόβλημα που έχουμε αυτή τη στιγμή είναι ότι θα πρέπει να γράψετε τις καταχωρήσεις μητρώου για `HKCU`κάθε χρήστη του υπολογιστή. Πρέπει να είναι στο `HKCU`όχι `HKLM`επειδή είναι οι προεπιλεγμένες ρυθμίσεις του χρήστη, και αλλάζουν ανά χρήστη. Η αίσθησή μου είναι ότι


1. Αυτό δεν είναι δυνατόν
2. Αυτό δεν είναι κάτι που ο εγκαταστάτης θα πρέπει να κάνουμε, αλλά κάτι η αίτηση θα πρέπει να κάνει (μετά από όλα τι συμβαίνει όταν ένα προφίλ χρήστη δημιουργείται μετά την εγκατάσταση;).


Με αυτό κατά νου, θέλω ακόμα να αλλάξει όσο το δυνατόν λιγότερο στην εφαρμογή, έτσι η ερώτησή μου είναι, **είναι δυνατό να προσθέσετε καταχωρήσεις μητρώου για κάθε χρήστη σε ένα `Visual Studio 2003`έργο εγκατάστασης;** 


Και, αυτή τη στιγμή το έργο απαριθμεί πέντε κλειδιά ρίζα μητρώου ( `HKEY_CLASSES_ROOT, HKEY_CURRENT_USER`, `HKEY_LOCAL_MACHINE`, `HKEY_USERS`, και των χρηστών / μηχάνημα Hive). Δεν ξέρω τίποτα για το βασικό χρήστες root, και δεν έχω δει χρηστών / μηχάνημα Hive. Μπορεί κάποιος να με διαφωτίσει σχετικά με το τι είναι; Ίσως θα μπορούσε να λύσει το πρόβλημά μου παραπάνω.

 
Visual Studio έργου εγκατάστασης - Ανά ρυθμίσεων μητρώου χρηστών
================================================================



Πρώτον: Ναι, αυτό είναι κάτι που ανήκει στην Αίτηση για την ακριβή reson που καθορίζονται: Τι θα συμβεί μετά τα νέα προφίλ του χρήστη που δημιουργήθηκε; Σίγουρα, αν χρησιμοποιείτε έναν τομέα είναι δυνατόν να έχουμε κάποια πράγματα να θέσει στο μητρώο για δημιουργία, αλλά αυτό δεν είναι πραγματικά μια περίπτωση χρήσης. Η αίτηση θα πρέπει να ελέγξετε αν υπάρχουν seetings και να χρησιμοποιήσετε τις προεπιλεγμένες ρυθμίσεις, εάν όχι.


Τούτου λεχθέντος, είναι δυνατόν να αλλάξετε άλλες Κλειδιά χρήστες μέσω του HKEY\_USERS Κυψέλη.


Δεν έχω καμία εμπειρία με το Πρόγραμμα εγκατάστασης του Visual Studio 2003, τόσο εδώ είναι ένα κομμάτι της (καμία σχέση) κώδικα 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

```

(Κωδικός Ευγενική προσφορά του [Jeroen Ritmeijer](http://jritmeijer.spaces.live.com/blog/cns!8A48A27460FB898A!965.entry) )

 

Είμαι στη μέση για να λύση μου με αυτή την καταχώρηση στο MSDN (δεν ξέρω πως δεν θα μπορούσα να το βρείτε πριν).


Ο χρήστης / μηχάνημα Hive   

δευτερεύοντα κλειδιά και τις αξίες που εγγράφονται στο παρόν κυψέλη θα εγκατασταθεί κάτω από την ομάδα HKEY\_CURRENT\_USER όταν ένας χρήστης επιλέγει «Just Me» ή η ομάδα HKEY\_USERS ή όταν ο χρήστης επιλέγει «Όλοι» κατά την εγκατάσταση.


[Επεξεργαστή μητρώου](http://msdn.microsoft.com/en-us/library/x6kd89c5(VS.80).aspx)

 

Υποθέτω ότι επειδή θέλετε να το ρυθμίσετε για όλους τους χρήστες, ότι είστε σε κάποιο είδος κοινόχρηστο υπολογιστή, το οποίο πιθανόν να λειτουργεί κάτω από ένα domain;


**ΕΔΩ ΕΙΝΑΙ DRAGONS**


Ας πούμε ότι ο Joe και η Jane συνδεθείτε τακτικά στον υπολογιστή, τότε θα το καθένα έχει «μητρώα».


Στη συνέχεια, θα εγκαταστήσει την εφαρμογή σας, και ο εγκαταστάτης θα χρησιμοποιήσει γιγαντιαίο αμυχές και αηδιαστικά πράγματα για να ρυθμίσετε τα στοιχεία στο πλαίσιο HKCU για αυτούς.


ΤΟΤΕ, bob θα έρθει και συνδεθείτε (ο ίδιος, και 500 άλλοι άνθρωποι έχουν λογαριασμούς στην περιοχή και έτσι μπορεί να κάνει αυτό). Ποτέ δεν χρησιμοποιείται σε αυτόν τον υπολογιστή πριν, οπότε δεν έχει μητρώου. Η πρώτη φορά που συνδέεται στο, τα παράθυρα του δημιουργεί ένα, αλλά δεν θα έχουν τη ρύθμισή σας.


Η εφαρμογή σας, στη συνέχεια πέφτει πάνω ή συμπεριφέρεται σωστά, και bob διαμαρτύρεται έντονα για αυτά τα μίζερα προϊόντα από raynixon ενσωματωθεί.


Η σωστή απάντηση είναι να έχουμε μόνο κάποιες προεπιλεγμένες ρυθμίσεις για την εφαρμογή σας, το οποίο μπορεί να τους γράψει στο μητρώο αν δεν τα βρείτε. Είναι γενικά καλή πρακτική ότι η εφαρμογή σας δεν πρέπει να εξαρτάται από το μητρώο, και θα πρέπει να δημιουργήσουν τα πράγματα όπως απαιτείται, για κάθε καταχώρηση μητρώου, όχι μόνο HKCU, ούτως ή άλλως

 

Παρά τα όσα το [άρθρο MSDN](http://msdn.microsoft.com/en-us/library/x6kd89c5(VS.80).aspx) λέει για χρήστη / μηχάνημα Hive, δεν γράφω για να HKEY\_USERS. Αντίθετα, γράφει σε HKCU αν επιλέξετε Μόνο εγώ και HKLM αν επιλέξετε όλους.


Έτσι, η λύση μου θα είναι να χρησιμοποιήσετε το User / μηχάνημα Hive, και στη συνέχεια στην εφαρμογή ελέγχει εάν οι καταχωρήσεις μητρώου βρίσκονται σε HKCU και αν όχι, αντίγραφα τους από HKLM. Ξέρω ότι αυτό ίσως να μην είναι ο πιο ιδανικός τρόπος για να γίνει αυτό, αλλά έχει το λιγότερο ποσό των αλλαγών.

 