2017-07-14 19 views
-1

私はソフトウェア(Patcher.exe)を配布しました。 Patcher.exeの名前をSystemPatcher.exeに変更する必要があります。C#を使用してEXEを指すすべてのショートカットを検索および削除できますか?

しかし、私たちはショートカットの問題を最小限に抑えたいと思います。

これを行うには...オリジナルのPatcher.exeと同じ名前の新しいC#プログラムを作成し、&を検索して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

関連する問題