Lister les périphériques

Résolu
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 15 oct. 2005 à 11:22
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 17 oct. 2005 à 11:41
Bonjour tout le monde,



Connaissez-vous un moyen de lister tous les périphériques installés sur un ordinateur (en utilisant l'API SetupDiGetClassDevsEx
ou autrement)



Merci,
@+

Nico { http://www.ni69.new.fr/ }

9 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 oct. 2005 à 17:12
J'ai constaté, comme vous, que cette clé n'existait plus sous Windows XP.

Cependant, on trouve sous HKLM\SYSTEM\Controlset001\enum l'ensemble des
périphériques installés. Puis, en fouillant dans les sous-arbres, on
trouve des entrées nommées DeviceDesc (Device Description) qui
devraient t'intéresser.

En modifiant légèrement le code ci-dessus, tu devrais rapidement trouver la solution.

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
15 oct. 2005 à 18:05
Le code qui suit n'est pas de moi et je ne l'ai pas vérifié. Il provient de feu delphijournal.infoliens.com :



Liste du matériel installé
uses Registry



procedure TForm1.Button1Click(Sender: TObject);

procedure GetHardwareList(DisplayStrings : TStrings);

var

RegHKDD, RegHKLM: TRegistry;

SLKeys, SLHWL: TStringList;

i: Integer;

RegDataInfo : TRegDataInfo;

begin

try

RegHKDD := TRegistry.Create;

RegHKDD.RootKey := HKEY_DYN_DATA;

RegHKLM := TRegistry.Create;

RegHKLM.RootKey := HKEY_LOCAL_MACHINE;

SLKeys := TStringList.Create;

SLHWL := TStringList.Create;

SLHWL.Sorted := true;

if RegHKDD.OpenKey('Config ManagerEnum', false) then begin

RegHKDD.GetKeyNames(SLKeys);

for i := 0 to SLKeys.Count - 1 do

if RegHKDD.OpenKey('Config ManagerEnum' + SLKeys[i], false)then

if RegHKLM.OpenKey(' Enum ' + RegHKDD.ReadString('HardWareKey'), false) then

if RegHKLM.GetDataInfo('Class', RegDataInfo) then

SLHWL.Add(RegHKLM.ReadString('Class') + ': '
+ RegHKLM.ReadString('DeviceDesc'));

end; {if RegHKDD.OpenKey('Config ManagerEnum', false)}

finally

SLKeys.Free;

RegHKLM.Free;

RegHKDD.Free;

end;

DisplayStrings.Assign(SLHWL);

SLHWL.Free;

end;

begin

GetHardwareList(Memo1.Lines);

end;


Autres codes, voir dans le cache de google
Enfin, il faudra vérifier qu'il fonctionne sur toutes les pateformes.
<hr color ="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
kasjacques Messages postés 11 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 2 décembre 2005
15 oct. 2005 à 20:18
Salut delphiprog, j'ai essayé le code de feu delphijournal.infoliens.com mais ça donne aucun resultat c'est à dire rien ne s'affiche dans le mémo.Je travail sous win xp, et j'ai remarqué qu'il n'ya pas clé Config ManagerEnum dans ma base de régistre. merci d'apporter les modifications qui s'impose au code. De mon côté je continue le recherches pour le parfaire. Merci
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 oct. 2005 à 11:31
Salut DelphiProg,

Merci de t'être occupé de mon problème. Malheureusement, comme le dit
kasjacques, le memo ne contient rien en fin d'exécution du code.

Une chose m'interpelle quand même : Existe-t-il vraiment une clé root nommée HKEY_DYN_DATA dans le registre

Je n'en n'avais pas connaissance... (elle n'existe pas dans l'éditeur regedit)


Je poursuis mes recherches...

Merci à vous deux

@+

Nico { http://www.ni69.new.fr/ }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 oct. 2005 à 17:33
Merci beaucoup DelphiProg pour cette précieuse information !!!!!

Je vais tout de suite me pencher sur ces clés du registre.

Petite question toutefois : ne faut-il mieux pas choisir la clé CurrentControlSet plutôt que ControlSet001

@+

Nico { http://www.ni69.new.fr/ }
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 oct. 2005 à 18:27
Je me heurte à une erreur bizarre....

Delphi ne veut pas ouvrir la clé !



OpenKey('SYSTEM\CurrentControlSet\Enum',False) renvoie false

alors que KeyExists('SYSTEM\CurrentControlSet\Enum') renvoie true !!!!



J'ai aussi essayé avec la clé ControlSet001, ça ne marche pas non plus...


@+

Nico { http://www.ni69.new.fr/ }
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 oct. 2005 à 18:33
Ha, j'ai compris, c'est une histoire d'autorisation d'accès...



C'est quand un peu embêtant de devoir aller dans la base de registre
pour autoriser manuellement le contrôle total aux utilisateurs avant de
pouvoir utiliser le code... Avez-vous une solution pour modifier les
autorisations de lecture d'une clé du registre automatiquement

@+

Nico { http://www.ni69.new.fr/ }
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 oct. 2005 à 20:52
Pour cela, jette un oeil sur le code modifier les droits d'un compte.

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
17 oct. 2005 à 11:41
Ok merci DelphiProg, je vais voir de ce côté là



@+

Nico { http://www.ni69.new.fr/ }
0
Rejoignez-nous