2016-10-18 19 views
1

Ich mag überprüfen, ob ein bestimmtes Programm auf den Start des Computers ausgeführt wird, zugegriffen i die win32 RegistryKey Klasse dafür:C# überprüfen, ob Programm läuft beim Start

private void Form1_Load(object sender, EventArgs e) 
    { 
     bool ok = isOnRegistryStartup("iFilter"); 
     MessageBox.Show(ok.ToString()); 
    } 
    private bool isOnRegistryStartup(string key) 
    { 
     RegistryKey RegistryKey = Registry.CurrentUser.OpenSubKey 
       ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
     if (registryKey.GetValue(key)!=null) 
     { 
      return true; 

     } 
     return false; 

    } 

Der Ausgang True in der Tat war, weil das Programm tatsächlich läuft auf dem Windows-Start, aber wenn ich diesen Programmstart von der Task manager (und sein Status wurde disabled) deaktiviert, das nächste Mal, wenn ich den Code über das Ergebnis lief noch True, obwohl dieses Programm nicht Teil der Autostart-Programme mehr ist.

Das führt mich zu einer einfachen Schlussfolgerung, dass, wenn der Windows-Task-Manager ein Startprogramm deaktiviert, es nicht seinen Schlüssel im Registrierungsschlüssel, aber es ändert einen anderen Wert davon..aber ich konnte nicht Finde heraus, was der veränderte Wert ist.

Ich hoffe, dass jemand helfen kann.

Danke.

+0

Suchen Sie in 'HKEY_CURRENT_USER' oder 'HKEY_LOCAL_MACHINE'? –

Antwort

0

Weil es deaktiviert auf taskmgr Einstellung entfernt nicht den Eintrag in

CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Run sondern entsprechenden Wert in CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run0200 0000000...-0300 0000 xxxxx....

+0

genial! Sie haben etwas verpasst, es ist Explorer/StartUpApproved. :) – Slashy

0

Gerade Einstellung ein wenig über den Ausbau was Robert gesagt, Sie das überprüfen sollten, folgende Register:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run32 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run32 

Für die Run und Run32 Register der Regel zu sein scheint:

  • "02 00 00 00 ..." -> aktiviert
  • andere -> deaktiviert
+0

Wenn ich einen neuen Schlüssel setze, wird es auch programmgesteuert ausgeführt, mit der 'SetValue()' Methode, und ich mache es in der 'HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run' Registrierung ... so das ist, wo ich nach dem Wertabruf suche .. @AlinG warum sollte ich andere Registrierungspfade überprüfen müssen? – Slashy

+0

Sie haben das nicht erwähnt, also wusste ich nicht, ob Sie auch dafür verantwortlich sind, das Programm als Startup zu setzen. Trotzdem würde ich es tun, nur um sicher zu sein. Wenn Sie sowohl die Installation als auch die Deinstallation kontrollieren können, ist es in Ordnung, wenn Sie den Schlüssel nur von der Stelle entfernen, an der Sie ihn hinzugefügt haben. Dieser Mechanismus ist ziemlich undokumentiert und funktioniert möglicherweise nicht mit älteren oder zukünftigen Versionen von Windows. Wenn ich es wäre, würde ich es als Dienst installieren. – AlinG

Verwandte Themen