2009-08-24 8 views
1

Ok, je suppose que j'ai un pet de cerveau ici et ne peux pas trouver mon moyen de m'en sortir. Ce que j'essaie d'accomplir est de lister tous les éléments de démarrage (applications, processus, etc) et les afficher sur un formulaire (comme ce que vous obtenez avec msconfig.exe). Je pensais que ce code le ferait:Obtenir tous les éléments de démarrage?

private List<StartupItems> getStartupItems() 
{ 
    try 
    { 
     ManagementClass cls = new ManagementClass("Win32_StartupCommand"); 
     ManagementObjectCollection coll = cls.GetInstances(); 
     List<StartupItems> items = new List<StartupItems>(); 

     foreach (ManagementObject obj in coll) 
     { 
      items.Add(
       new StartupItems 
       { 
        Command = obj["Command"].ToString(), 
        Description = obj["Description"].ToString(), 
        Name = obj["Name"].ToString(), 
        Location = obj["Location"].ToString(), 
        User = obj["User"].ToString() 
       }); 
     } 
     return items; 
    } 
    catch (Exception ex) 
    { 
     _message = ex.ToString(); 
     _status = false; 
     return null; 
    } 

Mais tout ce qui obtient sont les activés avec mon nom d'utilisateur. Ce que j'essaie d'obtenir, c'est tous les éléments, soit mon nom d'utilisateur ou mon système, tous ceux activés et tous ceux qui sont désactivés (comme msconfig). J'ai fait des tonnes de recherches et je ne trouve rien de vraiment différent de ce que j'utilise.

Répondre

1

Avez-vous envisagé de lire directement à partir du registre?

Une alternative serait d'exécuter autorunssc (c'est la version en ligne de commande d'autoruns) en arrière-plan et de lire sa réponse.

Questions connexes