2012-08-27 4 views
7

Ich versuche, nur einige Anwendungen für den aktuellen Benutzer zu starten, wenn Windows gestartet wird.Ausführen von C# -Anwendung unter Windows Start

Ich kann dies erreichen mit dem folgenden:

RegistryKey oKey = Registry.CurrentUser.OpenSubKey("Software", true); 
oKey = oKey.OpenSubKey("Microsoft", true); 
oKey = oKey.OpenSubKey("Windows", true); 
oKey = oKey.OpenSubKey("CurrentVersion", true); 
oKey = oKey.OpenSubKey("Run", true); 
oKey.SetValue("Application 1", "C:\\path\\to\\ap1.exe"); 
oKey.SetValue("Application 2", "C:\\path\\to\\ap2.exe"); 

Aber ich versuche dies als Teil eines Visual Studio Installer-Projekt auszuführen. Ich habe meine benutzerdefinierte Aktion hinzugefügt, das Programm startet wie es sollte, und das Installationsprogramm funktioniert großartig in XP.

In Windows 7 erhält das Installationsprogramm erhöhte Berechtigungen und fügt alles in die Registrierung für den aktuellen Benutzer ein. Allerdings fügt es die Registrierungseinträge ein, wenn es als eigenständige Anwendung (außerhalb des Installationsprojekts) ausgeführt wird und keine erhöhten Berechtigungen erhält.

Die einzige Sache, die ich herausfinden kann ist, dass mit den erhöhten Privilegien versucht wird, die Einträge in das Administratorkonto anstelle des aktuellen Benutzers einzufügen? oder gibt es noch etwas, das mir fehlt? Und gibt es eine andere Möglichkeit, mein Ziel hier zu erreichen?

+0

Könnten Sie mir mehr Informationen geben? oder erarbeiten Sie bitte Ihr Ziel? – VIRA

+1

Was passiert, wenn Sie 'Registry.LocalMachine.OpenSubKey()' bekommen? – wasyl

+0

Sie sollten keine benutzerdefinierten Aktionen dazu benötigen. –

Antwort

2

Gibt es einen Grund, den Autostart-Ordner für den Benutzer nicht zu verwenden?

Mehr als wahrscheinlich ist das Problem der Benutzer, unter dem der Installer ausgeführt wird. Wenn der Benutzer nicht der Administrator ist, wird das erweiterte Installationsprogramm im Kontext des Benutzers ausgeführt, der den Prozess erhöht hat.

Es wäre sicherer, Ihre Anwendung dem Startordner hinzuzufügen oder den Registrierungsschlüssel beim ersten Start hinzuzufügen.

1

Wenn das Installationsprogramm erhöhte Berechtigungen erhält, warum sollte die Einstellung in HKCU geschrieben werden? Schreiben Sie es stattdessen an HKLM. Es wird dann für alle Benutzer wirksam.

+0

'HCKU',' HKCU' gleicher Unterschied! – ja72

+0

Ja, das ist eine Option .. aber ich hatte gehofft, es für den aktuellen Benutzer nur zu halten – C0NFUS3D

+2

Benutzerspezifische Konfigurationseinstellungen werden am besten von der Anwendung und nicht vom Installer konfiguriert. –