2009-03-16 14 views
1

Comment puis-je supprimer un dossier de raccourci à partir Startmenu dans Windows en utilisant C#, je sais comment faire en utilisant ce code:Comment supprimer raccourci StartMenu en utilisant 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) 
     { 
     } 
    } 

Mais le problème que je dois supprimer un dossier raccourci dans le dossier ALL USERS, pas l'utilisateur actuellement connecté. Environment.SpecialFolder.StartMenu me donne l'utilisateur actuel pas tous les utilisateurs du dossier.

Toute idée,

Merci,

Répondre

0

Merci les gars, j'ai trouvé la réponse:

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

Heureux plantage sur des systèmes non anglais. Vous pouvez vous en sortir avec Vista, mais certainement pas sur XP. Malheureusement, je ne sais pas comment le faire correctement soit: -/ – OregonGhost

+1

Je pensais presque à down-vote cela. Cela ne fonctionnera pas correctement dans de nombreuses situations (les versions Windows localisées n'étant que l'une d'entre elles). –

5

Si cela ne vous dérange pas un peu Win32, vous pouvez utiliser 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

Utilisez Environment.SpecialFolder.CommonStartMenu au lieu de StartMenu.

Questions connexes