windows - Visual Studio-Setup-Projekt

Translate

Ich versuche, ein Setup-Projekt in zu verwaltenVisual Studio 2003(Ja, es ist eine Legacy-Anwendung). Das Problem, das wir im Moment haben, ist, dass wir Registrierungseinträge schreiben müssenHKCUfür jeden Benutzer am Computer. Sie müssen in der seinHKCUeher, alsHKLMweil sie die Standardbenutzereinstellungen sind und sich pro Benutzer ändern. Mein Gefühl ist das

  1. Das ist nicht möglich
  2. Dies sollte nicht das Installationsprogramm tun, sondern etwas, das die Anwendung tun sollte (was passiert schließlich, wenn nach der Installation ein Benutzerprofil erstellt wird?).

In diesem Sinne möchte ich immer noch so wenig wie möglich an der Anwendung ändern. Meine Frage lautet also:ist es möglich, Registrierungseinträge für jeden Benutzer in einem hinzuzufügenVisual Studio 2003Projekt einrichten?

Derzeit listet das Projekt fünf Registrierungsstammschlüssel auf (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERSund User / Machine Hive). Ich weiß nicht wirklich etwas über den Root-Schlüssel des Benutzers und habe User / Machine Hive nicht gesehen. Kann mich jemand aufklären, was sie sind? Vielleicht könnten sie mein Problem oben lösen.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Erstens: Ja, dies gehört in die Anwendung für genau den von Ihnen angegebenen Resonanzwert: Was passiert, nachdem neue Benutzerprofile erstellt wurden? Sicher, wenn Sie eine Domain verwenden, ist es möglich, dass bei der Erstellung einige Inhalte in die Registrierung aufgenommen werden, aber dies ist kein wirklicher Anwendungsfall. Die Anwendung sollte prüfen, ob Einstellungen vorhanden sind, und andernfalls die Standardeinstellungen verwenden.

Abgesehen davon ist es möglich, die Schlüssel anderer Benutzer über den HKEY_USERS Hive zu ändern.

Ich habe keine Erfahrung mit dem Visual Studio 2003-Setup-Projekt. Hier finden Sie einen (völlig unabhängigen) VBScript-Code, der Ihnen möglicherweise nur eine Vorstellung davon gibt, wo Sie suchen müssen:

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 mit freundlicher Genehmigung vonJeroen Ritmeijer)

Quelle
Translate

Ich vermute, dass Sie sich auf einem freigegebenen Computer befinden, der wahrscheinlich unter einer Domäne ausgeführt wird, weil Sie ihn für alle Benutzer festlegen möchten.

HIER SEIN DRACHEN

Nehmen wir an, Joe und Jane melden sich regelmäßig am Computer an, dann haben sie jeweils "Registries".

Anschließend installieren Sie Ihre App, und das Installationsprogramm verwendet riesige Hacks und widerliche Dinge, um Elemente unter HKCU für sie festzulegen.

DANN kommt Bob und meldet sich an (er und 500 andere Personen haben Konten in der Domain und können dies tun). Er hat diesen Computer noch nie benutzt, daher hat er keine Registrierung. Wenn er sich zum ersten Mal anmeldet, erstellt Windows ihm einen, aber er hat Ihre Einstellung nicht.

Ihre App fällt dann um oder verhält sich falsch und Bob beschwert sich lautstark über die beschissenen Produkte von Raynixon.

Die richtige Antwort besteht darin, nur einige Standardeinstellungen in Ihrer App zu haben, die sie in die Registrierung schreiben können, wenn sie nicht gefunden werden. Es ist allgemein empfehlenswert, dass Ihre App niemals von der Registrierung abhängt und bei Bedarf Dinge für jeden Registrierungseintrag erstellt, nicht nur für HKCU

Quelle
Ray
Translate

Trotz was dieMSDN-Artikel Archiv des MSDN-Artikelssagt über User / Machine Hive, es schreibt nicht an HKEY_USERS. Vielmehr schreibt es an HKCU, wenn Sie Just Me auswählen, und an HKLM, wenn Sie alle auswählen.

Meine Lösung besteht also darin, den Benutzer- / Maschinen-Hive zu verwenden. In der Anwendung wird dann geprüft, ob sich die Registrierungseinträge in HKCU befinden, und wenn nicht, werden sie aus HKLM kopiert. Ich weiß, dass dies wahrscheinlich nicht der idealste Weg ist, aber es hat die geringsten Änderungen.

Quelle
Ray
Translate

Mit diesem Eintrag auf MSDN bin ich auf dem Weg zu meiner Lösung (ich weiß nicht, wie ich ihn vorher nicht finden konnte).

Benutzer / Maschinenstock
Unterschlüssel und Werte, die unter diesem Hive eingegeben wurden, werden unter dem HKEY_CURRENT_USER-Hive installiert, wenn ein Benutzer "Just Me" oder den HKEY_USERS-Hive wählt oder wenn ein Benutzer während der Installation "Jeder" wählt.

Registierungseditor Archiv des MSDN-Artikels

Quelle