2009-03-16 10 views
1

を使用してスタートメニューのショートカットを削除するには、私はこのコードを使用していることを行う方法を知っている:どのようにどのように私はC#を使用して、Windowsのスタートメニューからショートカットフォルダを削除することができますC#

private void RemoveShortCutFolder(string folder) 
    { 
     folder = folder.Replace("\" ", ""); 
     folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), folder); 
     try 
     { 
      if (System.IO.Directory.Exists(folder)) 
      { 
       System.IO.Directory.Delete(folder, true); 
      } 
      else 
      { 
      } 
     } 
     catch (Exception) 
     { 
     } 
    } 

しかし、私は1つを削除する必要がある問題現在のログインユーザではなく、ALL USERSフォルダ内のショートカットフォルダ。 Environment.SpecialFolder.StartMenuは私にすべてのユーザーフォルダではない現在のユーザーを与えます。

任意のアイデア、

おかげで、

答えて

0

みんなありがとう、私は答えを見つけた:

private void RemoveShortCutFolder(string folder) 
    { 
     folder = folder.Replace("\" ", ""); 
     folder = Path.Combine(Path.Combine(Path.Combine(Environment.GetEnvironmentVariable("ALLUSERSPROFILE"), "Start Menu"), "Programs"), folder); 
     try 
     { 
      if (System.IO.Directory.Exists(folder)) 
      { 
       System.IO.Directory.Delete(folder, true); 
      } 
      else 
      { 
      } 
     } 
     catch (Exception) 
     { 
     } 
    } 
+1

英語以外のシステムではクラッシュします。あなたはVistaでこれで逃げるかもしれませんが、間違いなくXPではありません。残念ながら、私はこれを正しく行う方法を知らない: -/ – OregonGhost

+1

私はこれをダウン投票することをほとんど考えていた。それは多くの状況(ローカライズされたWindowsのバージョンはそれらの1つだけです)では正しく動作しません。 –

5

あなたは少しのWin32を気にしない場合、あなたはSHGetSpecialFolderPathを使用することができます。

[DllImport("shell32.dll")] 
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, StringBuilder lpszPath, CSIDL nFolder, bool fCreate); 

enum CSIDL 
{ 
    COMMON_STARTMENU = 0x0016, 
    COMMON_PROGRAMS = 0x0017 
} 

static void Main(string[] args) 
{ 
    StringBuilder allUsersStartMenu = new StringBuilder(255); 
    SHGetSpecialFolderPath(IntPtr.Zero, allUsersStartMenu, CSIDL.COMMON_PROGRAMS, false); 
    Console.WriteLine("All Users' Start Menu is in {0}", allUsersStartMenu.ToString()); 
} 
2

StartMenuではなくEnvironment.SpecialFolder.CommonStartMenuを使用してください。

関連する問題