2010-12-15 167 views
0

Salut les gars, j'ai un problème étrange. J'essaie d'obtenir la liste de tous les programmes de démarrage de Registry - LocalMachine, CurrentUser, sous-clés Run, RunOnce, RunOnceEx. Et après que je peux obtenir la liste des liens dans le dossier DémarrageComment obtenir la liste de tous les processus de démarrage à partir du Registre en utilisant C# sur Windows 7 64 bits?

Pour Win64, je trouve que les programmes de démarrage sont dans cette clé

LocalMachine/Logiciels/Wow6432Node/Microsoft/Windows/CurrentVersion/Run

Le problème est dans ce code, en cours d'exécution je reçois la liste des applications qui sont sous la sous-clé différente LocalMachine \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run au lieu du ci-dessous décrit LocalMachine \ Software \ Microsoft \ Windows \ CurrentV ersion \ Run

Est-ce normal?

Microsoft.Win32.RegistryKey key; 
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false); 

foreach (string appName in key.GetValueNames()) 
{ 
     try 
     { 
     MessageBox.Show(appName); 
     } 
     catch (Exception ex) 
     { 

     } 

} 

Je tryed en utilisant ce WMI solution mais on n'a pas eu toutes les applications de démarrage. C'est pourquoi j'ai décidé de les obtenir manuellement du registre.

  1. Ce script est-il correct et pourquoi il ne fait pas ce qu'il est censé faire?
  2. Existe-t-il un autre moyen d'obtenir toutes les applications et processus de démarrage?

    Merci

Répondre

0

Sur un système d'exploitation Windows 64 bits, il y a 2 HKLM \ distincts ruches de logiciels. Un pour les applications 64 bits (HKLM \ Software) et un pour les applications 32 bits (HKLM \ Software \ Wow6432Node lorsqu'il est affiché depuis une application 64 bits.) Il est considéré comme HKLM \ Software pour les applications 32 bits).

Si vous compilez votre application .Net en tant que MSIL ou x64, vous pouvez accéder à la ruche logicielle 32 bits en ajoutant Wow6432node au chemin de registre. Dans le cas contraire, vous pouvez également compiler en x86 et exécuter en 32 bits.

Espérons que cette aide

+0

Sournois, mais compréhensible. – Amy

+0

Merci Sam, le problème était que j'utilisais l'application 32 bits sur Windows 64 bits. Et j'utilise VS 2010 Express. Donc, c'est un peu difficile de faire compiler des applications 64 bits. Mais maintenant tout va bien. Peut obtenir toutes les clés de registre sans problèmes. Merci encore! – nasko7