2009-08-24 67 views
1

好吧,我想我在这里有一个大脑放屁,无法找到我的出路。我试图完成的是列出所有启动项目(应用程序,进程等),并将它们显示在窗体上(如使用msconfig.exe获得的内容)。我认为这段代码会这样做:获取所有启动项目?

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; 
    } 

但是,所有得到的是使用我的用户名启用的。我试图得到的是所有项目,无论是我的用户名或系统,所有启用的和所有禁用的(就像msconfig)。我做了大量的搜索,找不到与我使用的任何东西都不一样的东西。

回答

1

你有没有考虑直接从注册表中读取?

另一种方法是在后台运行autorunssc(它是autoruns的命令行版本)并阅读其响应。