2016-06-16 26 views
0

Das Problem von https://stackoverflow.com/a/37859812/4878558Wie kann ich diesen Registrierungswert für meine Benutzer von meinem Installateur

Ich brauche den Registrierungswert für den aktuellen Benutzer zu setzen, die die Installation von bis zu starten. Da installieren für Systemmodus gehen - ich weiß nichts über aktuellen Benutzer

Auch meinen Code ‚System.UnauthorizedAccessException‘

SecurityIdentifier sID = WindowsIdentity.GetCurrent().User; 
var subKey = Registry.Users.OpenSubKey(sID + "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); 
subKey.SetValue("test", "test"); 
enter code here 
+0

Welche Software verwenden Sie zum Erstellen des Installationsprogramms? Normalerweise erlaubt es Ihnen, mit der Registrierung zu arbeiten – vmg

+0

Ich habe Visual Studio 2015 Installationserweiterung [Tutorial Video] (https://www.youtube.com/watch?v=z0v6hmumCFU) –

+0

Warum verwenden Sie nicht VSI Registry Editor? Müssen Sie es innerhalb einer benutzerdefinierten Aktion tun? – Ripple

Antwort

1

Als Ripple und I h Ave beide kommentiert, es gibt keine Notwendigkeit für Code. Gehen Sie im Setup-Projekt zur Ansicht "Registry", klicken Sie mit der rechten Maustaste auf Software unter HKEY_CURRENT_USER und fügen Sie den Schlüssel Microsoft, dann Windows, CurrentVersion und anschließend Run hinzu, indem Sie jeden Schlüssel hinzufügen.

Klicken Sie dann in der Run-Key-Ansicht mit der rechten Maustaste in den Bereich Name, View auf der rechten Seite und fügen Sie einen neuen String-Wert hinzu, wobei der Name Ihr Name ist. Der Wert, nehme ich an, ist der Pfad zu deiner exe, und (angenommen, es ist im Anwendungsordner) mache den Wert [TARGETDIR] my.exe.

Wenn Ihre Installation eine "Jeder" Installation ist, gibt es einen guten Grund, warum es nicht funktionieren kann. Das hat nichts mit dem Code zu tun. In einer Everyone-Installation wird der benutzerdefinierte Aktionscode mit dem Systemkonto (NICHT dem installierenden Benutzer) ausgeführt, sodass Sie versuchen, einen Ausführungsschlüssel für das Systemkonto zu erstellen.

0

Hier geben wie autostartup Optionen schreiben:

const string AutorunRegistryKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"; 
Registry.SetValue(AutorunRegistryKey, <AppName>, <PathToApplication>); 

Wenn Sie es aus autostartup entfernen:

const string AutorunRelativePath = @"Software\Microsoft\Windows\CurrentVersion\Run\"; 
var key = Registry.CurrentUser.OpenSubKey(AutorunRelativePath, true); 
    if (key != null) 
    { 
     key.DeleteValue(<AppName>, false); 
     key.Close(); 
    } 
+0

Das Problem hier, dass ich dies über Setup-Projekt ausführen möchte, die MSI-Installer generiert. Setup erfordert Administratorzugriff - Benutzerdefinierte Aktion wird von einem System/Admin-Konto ausgeführt, nicht vom ersten Benutzerkonto. Das Programm wird also nicht gestartet, wenn sich der Benutzer anmeldet. –

+0

Warum machen Sie das mit Code? Setzen Sie es einfach in die Registry-Ansicht des Setup-Projekts. – PhilDW