2017-07-14 60 views
-1

於是我發了一個軟件(Patcher.exe)。我們現在需要將Patcher.exe重命名爲SystemPatcher.exe。是否可以使用C#搜索並刪除指向EXE的所有快捷方式?

但是,我們想盡量減少(如果不是完全避免)快捷方式的問題。

這樣做...我想創建一個新的C#程序,命名爲與原始Patcher.exe相同並且搜索&刪除指向Patcher.exe的所有快捷方式。然後,它會在用戶桌面上創建一個新的SystemPatcher.exe快捷方式,並通知他們有關更改。

我可以做最後一點,但我的問題是我不知道是否有可能在用戶計算機上搜索指向Patcher.exe的所有快捷方式並刪除它們。

這可能嗎?有沒有人有關於如何在C#中完成這個想法?

P.S沒有舊的Patcher.exe只是啓動SystemPatcher.exe不是一個選項(它由於某種原因導致其他軟件的問題)。

+2

這可能嗎?是。你是要求我們爲你做,還是......?也許你還應該考慮一個程序如何搜索每個用戶的桌面。如果你的系統允許的話,你應該更擔心安全問題。如果不是,請考慮您需要在每臺計算機上分別安裝此理論程序。 – Clay07g

+0

我們不會單獨安裝它,因爲軟件的名稱是標題。它是一個修補軟件。不,我不是要求你這樣做,只是朝着這個方向努力。 – Ricky

+0

我認爲快捷方式應該由安裝程序管理,查看InstallShield或高級安裝程序(還有很多其他安裝程序),安裝程序應該生成快捷方式,註冊表項等,然後在更新軟件時可以生成補丁更新所有快捷方式等。 – Enrico

回答

1

您可以用您的用戶權限遍歷所有.lnk文件。

void Main() 
{ 
    SearchAndDestroy("c:\\"); 
} 

static void SearchAndDestroy(string folder) 
{ 
    Parallel.ForEach(Directory.GetFiles(folder, "*.lnk"), file => 
    { 
     try 
     { 

      if (File.ReadLines(file).Any(line => line.Contains("your.exe"))) 
      { 
       // delete it 
      } 
     } 
     catch (Exception) 
     { 

      // inaccesible file 
     } 
    }); 

    Parallel.ForEach(Directory.GetDirectories(folder), subDir => 
    { 
     try 
     { 
      SearchAndDestroy(subDir); 
     } 
     catch 
     { 
      // inaccesible dir. 
     } 
    }); 
} 
+0

這樣做,謝謝。 – Ricky

相關問題