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

korichitarek 37 Messages postés mercredi 17 mai 2006Date d'inscription 14 novembre 2016 Dernière intervention - 9 août 2011 à 16:23 - Dernière réponse : bravemouse 75 Messages postés jeudi 8 mars 2012Date d'inscription 6 juin 2016 Dernière intervention
- 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

7 réponses

Meilleure réponse
Utilisateur anonyme - 11 août 2011 à 13:25
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

Merci Utilisateur anonyme 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 Utilisateur anonyme
Utilisateur anonyme - 10 août 2011 à 01:27
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
korichitarek 37 Messages postés mercredi 17 mai 2006Date d'inscription 14 novembre 2016 Dernière intervention - 10 août 2011 à 11:26
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
korichitarek 37 Messages postés mercredi 17 mai 2006Date d'inscription 14 novembre 2016 Dernière intervention - 10 août 2011 à 12:15
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
Utilisateur anonyme - 10 août 2011 à 14:24
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
bravemouse 75 Messages postés jeudi 8 mars 2012Date d'inscription 6 juin 2016 Dernière intervention - 16 janv. 2016 à 00:10
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 75 Messages postés jeudi 8 mars 2012Date d'inscription 6 juin 2016 Dernière intervention - 16 janv. 2016 à 00:20
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.