Lecure de NUMERO PHYSIQUE du DISQUE DUR [Résolu]

Messages postés
37
Date d'inscription
mercredi 17 mai 2006
Dernière intervention
14 novembre 2016
- - Dernière réponse : bravemouse
Messages postés
75
Date d'inscription
jeudi 8 mars 2012
Dernière intervention
6 juin 2016
- 16 janv. 2016 à 00:20
Bonjour ;
svp si quelqu'un a une idee sur la lecture du NUMERO PHYSIQUE du DISQUE DUR ET QUELQUE soit sa technologie (ide,sata,ata,..)et cela sans importer un objet spécifique sur la plette de delphi (c.à.d par programmation )

merci de me lire
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
3
Merci
En écrivant sous google Delphi+Win32_PhysicalMedia on obtient deux liens

Lien 1 : ici

Lien 2 : Ici

La prochaine fois : Fais un effort de faire toi même tes recherches

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
0
Merci
Une simple recherche conduit à la fonction GetVolumeInformation documentée içi

En lisant en détail l'article de la MSDN, on voit

lpVolumeSerialNumber [out, optional]

A pointer to a variable that receives the volume serial number.

This parameter can be NULL if the serial number is not required.

This function returns the volume serial number that the operating system assigns when a hard disk is formatted. To programmatically obtain the hard disk's serial number that the manufacturer assigns, use the Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber.

Allez aux charbons et la prochaine pense à chercher un ptit peu
Commenter la réponse de Utilisateur anonyme
Messages postés
37
Date d'inscription
mercredi 17 mai 2006
Dernière intervention
14 novembre 2016
0
Merci
MERCI de me repondre ;

j'ai lus l'article de la MSDN, et
lpVolumeSerialNumber [out, optional]
mais onnetement j'ai pas saisi comment l'utiliser en delphi et avoir le numero de serie physique du DD
Commenter la réponse de korichitarek
Messages postés
37
Date d'inscription
mercredi 17 mai 2006
Dernière intervention
14 novembre 2016
0
Merci
LA fonction GetVolumeInformation permet de lire la numero de serie logique et pas le numero physique .
NB: LE NUMERO PHYSIQUE C'EST UN NUMERO UNIQUE ALLOUE PAR LE CONSTRUCTEUR
Commenter la réponse de korichitarek
0
Merci
Oui mais lit ce que j'ai souligné en rouge

"To programmatically obtain the hard disk's serial number that the manufacturer assigns, use the Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber"

Pour obtenir par programmation le numéro de série du disque dur que le constructeur a assigné, utilise Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber : C'est clair et sans appel (il y a un ligne que pointe vers le WMI. Dans ce lien il y a des exemples de scripts que tu peux traduire).
Commenter la réponse de Utilisateur anonyme
Messages postés
75
Date d'inscription
jeudi 8 mars 2012
Dernière intervention
6 juin 2016
0
Merci
bonjour:
voici le code source complet:
unit UMain;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ActiveX, ComObj;

type
TFrmMain = class(TForm)
Edt_HDD_SerialNumber: TEdit;
Btn_Copy: TButton;
procedure FormCreate(Sender: TObject);
procedure Btn_CopyClick(Sender: TObject);
private
{ Private declarations }
function GetWMIString(const WMIClass, WMIProperty: String): String;
public
{ Public declarations }
FSWbemLocator: OLEVariant;
FWMIService: OLEVariant;
end;

var
FrmMain: TFrmMain;

implementation

{$R *.dfm}

procedure TFrmMain.Btn_CopyClick(Sender: TObject);
begin
Edt_HDD_SerialNumber.SelectAll;
Edt_HDD_SerialNumber.CopyToClipboard;
showMessage('The HDD Unique Serial Number is Copied Successfully');
end;

procedure TFrmMain.FormCreate(Sender: TObject);
var
s: string;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
s := GetWMIString('Win32_PhysicalMedia', 'SerialNumber'); // get the Unique Serial Number
s := StringReplace(s, ' ', '', [rfReplaceAll]); // Dellete ALL spaces by StringReplace function
Edt_HDD_SerialNumber.Text := s;
end;

function TFrmMain.GetWMIString(const WMIClass, WMIProperty: String): String;
const
wbemFlagForwardOnly = $00000020;
var
FWbemObjectSet: OLEVariant;
FWbemObject: OLEVariant;
oEnum: IEnumvariant;
iValue: LongWord;
begin;
Result := '';
FWbemObjectSet:= FWMIService.ExecQuery(Format('Select %s from %s', [WMIProperty, WMIClass]), 'WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, FWbemObject, iValue) = 0 then
if not VarIsNull(FWbemObject.Properties_.Item(WMIProperty).Value) then
Result := FWbemObject.Properties_.Item(WMIProperty).Value;
FWbemObject := Unassigned;
end;


end.
bravemouse
Messages postés
75
Date d'inscription
jeudi 8 mars 2012
Dernière intervention
6 juin 2016
-
Notice also that it recommends to use the WMI Win32_Physical Media property “SerialNumber” to obtain the manufacturer’s serial. Interestingly enough, this won’t work 100% of the time. The reason is that this property is optionally defined by the manufacturer and must be supplied by the hard disk driver.
lire attentivement se lien: https://micksmix.wordpress.com/2009/12/10/how-to-read-the-manufacturers-serial-number-from-a-hard-drive-with-delphi-and-without-wmi/
Commenter la réponse de bravemouse

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.