2009-08-24 55 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的命令行版本)並閱讀其響應。