Lister les périphériques [Résolu]

ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 15 oct. 2005 à 11:22 - Dernière réponse : ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention
- 17 oct. 2005 à 22:01
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/ }
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 16 oct. 2005 à 17:12
3
Merci
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.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Meilleure réponse
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 17 oct. 2005 à 22:01
3
Merci
J'ai testé sans succès le code de Nono40 sur la modification des droits d'un compte , mais j'ai trouvé une autre solution : il faut utiliser OpenKeyReadOnly( ) qui permet d'accéder au contenu de la clé avec la valeur de sécurité d'accès KEY_READ. En effet, seul SYSTEM peut accéder à cette clé en lecture/écriture... Ce qui fait que OpenKey ne marchait pas !

C'est vraiment par hasard que j'ai trouvé ça, au moment où je désespérais de ne jamais y arriver !



Merci en tous cas de m'avoir mis sur la piste en me donnant la bonne clé du registre !



Code final : http://www.delphifr.com/code.aspx?ID=34233

@+

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

Merci ni69 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de ni69
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 15 oct. 2005 à 18:05
0
Merci
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.
Commenter la réponse de cs_Delphiprog
kasjacques 11 Messages postés lundi 7 février 2005Date d'inscription 2 décembre 2005 Dernière intervention - 15 oct. 2005 à 20:18
0
Merci
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
Commenter la réponse de kasjacques
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 oct. 2005 à 11:31
0
Merci
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/ }
Commenter la réponse de ni69
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 oct. 2005 à 17:33
0
Merci
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/ }
Commenter la réponse de ni69
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 oct. 2005 à 18:27
0
Merci
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/ }
Commenter la réponse de ni69
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 oct. 2005 à 18:33
0
Merci
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/ }
Commenter la réponse de ni69
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 16 oct. 2005 à 20:52
0
Merci
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.
Commenter la réponse de cs_Delphiprog
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 17 oct. 2005 à 11:41
0
Merci
Ok merci DelphiProg, je vais voir de ce côté là



@+

Nico { http://www.ni69.new.fr/ }
Commenter la réponse de ni69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.