Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Encore la question sur le numéro de série du matériel (disque dur, carte graphique...)

en cherchant dans le forum d'autodesk j'ai trouvé ceci (ancien) et rien d'autre http:// http://discussion.autodesk.com/thread.jspa?messageID=1228508 donc c'est une question qui reste posée. les réponses qui ont été fournies et nottement VxGetDriveInfos que vous pouvez retrouver ici http://www.menziengineering.ch/ donne le numéro de série du volume c: ou d: (pour c: différent de d: quand il y a plusieurs partitions) qui peut etre changé à chaque repartition ou chaque formatage, il peut même être changé par l'utilisateur si je crois bien certains dire.

 

j'ai également cherché dans les forums de Windows pour voir si dans la base de registre, il y a certaines informations sur les numéros de série c'est à dire que windows peut inscrire au moment de l'installation, mais j'ai pas trouvé de réponses. La plupart pensent que ces informations ne figurent pas dans le registre.

 

Moi je pense que si certains softs comme Aida32 peut extraire ces informations, pourquoi n'y aurait-il pas un moyen en lisp de le faire. moi je ne maitrise bien le lisp, mais les amis chvronnés, et il y en a pas mal ici sur ce forum, peuvent bien faire un effort.

 

c'est une question qui restera posée en 2007.

Meilleurs voeux pour 2007 à tous

Posté(e)

Moi, je veux bien. Encore faut-il savoir quoi rechercher ?

J'ai regardé du coté des activex et on peux ressortir plusieurs infos, sur la mémoire, le bios, la carte vido et j'en passe.

Mais je n'ai rien trouvé à part l'adresse IP qui permette d'identifier un ordi. Je sais que Microsoft à un moment donné a mis un numéro de serie fixe sur le processeur afin de pouvoir l'identifier à coup sur à distance, mais cela a fait un tel scandale qu'il a du abandonner (a moins qu'il n'ai continué, mais là on est dans le secret des dieux ;) )

 

Il existe plusieurs solutions efficace pour protéger un logiciel. Reste à savoir ce que tu veux exactement

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci Patrick_35

 

En fait tout le besoin réside dont le fait de n'exécuter le lisp sur une machine que si l'on le droit de le faire moyennat un numéro de certification qui dépendrait entre autre d'un numéro de série unique, ou d'un identifiant unique (un chiffre hexadécimal est souhaitable pour des raisons de calcul).

Je sais qu'il y a plusieurs façons de protéger un lisp ou une application, comme le verouillage matériel (dongle), mais on va pas faire de dongle pour une application lisp dont le coût est moins cher que le dongle lui même.

 

Pour l'adresse IP c'est pas sûr car à ma connaissance (un peu limitée dans les reseaux), l'adresse IP n'est pas unique et cela depend de plusieurs paramètres, en plus de celà reste le problème que j'ai évoqué l'autre fois celui du cas ou on n'a pas de connexion INTERNET. J'ai testé ton code sur une machine qui n'est pas connectée, ça ne donne rien.

 

Les infos dont tu parlais ne contiennet pas quelque chose comme un numéro de série par exemple celles relatives au bios?

 

Merci encore une fois

Posté(e)

Salut

Ce que j'ai trouvé vite fait sur le net et traduit en vlisp (de sources en vb)

C'est juste pour te monter ce que l'on peut faire en vlisp via les activex

 

@+

 

(defun c:infos (/ item meth1 meth2 wmi)
 (vl-load-com)
 (setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_BIOS"))
 (princ "\nInformations BIOS")
 (vlax-for item meth2
   (princ (strcat "\nFabriquant : " (vlax-get item 'Manufacturer)))
   (princ (strcat "\nVersion : " (vlax-get item 'SMBIOSBIOSVersion)))
;    (princ (strcat "\nN° de Serie : " (vlax-get item 'SerialNumber)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Processor"))
 (princ "\nInformations Processeur")
 (vlax-for item meth2
   (princ (strcat "\nProcesseur : " (vlax-get item 'Name)))
;    (princ (strcat "\nFréquence : " (vlax-get item 'MaxClockSpeed)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_VideoController"))
 (princ "\nInformations Carte Graphique")
 (vlax-for item meth2
   (princ (strcat "\nNom : " (vlax-get item 'Caption)))
;    (princ (strcat "\nRAM : " (vlax-get item 'AdapterRAM)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_SoundDevice"))
 (princ "\nInformations Carte Son")
 (vlax-for item meth2
   (princ (strcat "\nNom : " (vlax-get item 'Name)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_CDROMDrive"))
 (princ "\nInformations CDROM")
 (vlax-for item meth2
   (princ (strcat "\nNom : " (vlax-get item 'Name)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_OperatingSystem"))
 (princ "\nInformations OS")
 (vlax-for item meth2
   (princ (strcat "\nNom : " (vlax-get item 'Caption)))
   (princ (strcat "\nRépertoire Windows : " (vlax-get item 'WindowsDirectory)))
   (princ (strcat "\nRépertoire Système : " (vlax-get item 'SystemDirectory)))
;    (princ (strcat "\nService Pack : " (vlax-get item 'ServicePackMajorVersion) "." (vlax-get item 'ServicePackMinorVersion)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_ComputerSystem"))
 (princ "\nInformations PC")
 (vlax-for item meth2
   (princ (strcat "\nFabriquant : " (vlax-get item 'Manufacturer)))
   (princ (strcat "\nModèle : " (vlax-get item 'Model)))
   (princ (strcat "\nNom : " (vlax-get item 'Name)))
   (princ (strcat "\nUtilisateur Courant : " (vlax-get item 'UserName)))
   (princ (strcat "\nDomaine : " (vlax-get item 'Domain)))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_PhysicalMemory"))
 (princ "\nInformations RAM")
 (vlax-for item meth2
   (princ (strcat "\nRAM : " (itoa (/ (atoi (vlax-get item 'Capacity)) 1048576)) "Mo"))
 )
 (setq meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_DiskDrive"))
 (princ "\nInformations Disque Dur")
 (vlax-for item meth2
   (princ (strcat "\nHD : " (vlax-get item 'Caption)))
   (princ (strcat "\nTaille : " (itoa (/ (atoi (vlax-get item 'Size)) 1048576)) "Mo"))
 )
 (vlax-release-object meth1)
 (vlax-release-object meth2)
 (vlax-release-object wmi)
 (princ)
)

 

ps : si tu le souhaites, je vais rechercher le numéro de série d'un DD

 

[Edité le 17/12/2006 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

bah ton truc ne me vois que mon lecteur ZIP et pas mon disuqe dur!

 

Informations BIOS

Fabriquant : Hewlett-Packard

Version : 786D7 v01.03

Informations Processeur

Processeur : Intel® Core2 CPU 6400 @ 2.13GHz

Processeur : Intel® Core2 CPU 6400 @ 2.13GHz

Informations Carte Graphique

Nom : NVIDIA Quadro FX 1500

Informations Carte Son

Nom : Realtek High Definition Audio

Informations CDROM

Nom : HL-DT-ST DVD+-RW GSA-H21L

Informations OS

Nom : Microsoft Windows XP Professionnel

Répertoire Windows : C:\WINDOWS

Répertoire Système : C:\WINDOWS\system32

Informations PC

Fabriquant : Hewlett-Packard

Modèle : HP xw4400 Workstation

Nom : [Censuré] :casstet:

Utilisateur Courant : [Censuré] :casstet:

Domaine : [Censuré] :casstet:

Informations RAM

RAM : 1024Mo

RAM : 1024Mo

RAM : 1Mo

Informations Disque Dur

HD : IOMEGA ZIP 100; erreur: type d'argument incorrect: stringp nil

 

Ce n'est juste que pour t'embêter (le lecteur est vide donc incapable de déterminer la taille)

:D

 

[Edité le 18/12/2006 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Je n'ai pas poussé les tests et de plus, j'ai mis un ; devant certains paramètres qui ne passent pas sur certain pc et ce lisp a été écrit en un seul jet et suivant une source en vb sans de réelles recherches de ma part

C’est juste pour montrer la voie de ce que l’on peut récupérer comme info sur le pc, mais si on prend le temps et que l’on continue de chercher, il y a sûrement d’autres infos

 

ps : en ce qui concerne la taille du disque dur, chez moi, l'information est érroné

 

nb : Et ceux qui veulent contribuer à étoffer le lisp, il n'y a plus qu'a

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Non, mais d'une autre source sur ce même site (fais une recherche avec WbemScripting.SWbemLocator+ExecQuery)

 

J'ai été plus loin avec les DD

 

@+

 

(defun c:hd(/ item meth1 meth2 wmi)
 (defun lister(val / it)
   (vlax-for it val
     (princ (strcat "\n" (vlax-get it 'name) " : "))
     (if (vlax-get it 'value)
       (princ (vlax-get it 'value))
       (princ "Nil")
     )
   )
 )

 (vl-load-com)
 (setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
       meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
       meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_DiskDrive"))
 (vlax-for item meth2
;    (lister (vlax-get item 'Methods_))
;    (lister (vlax-get item 'Path_))
   (lister (vlax-get item 'Properties_))
   (lister (vlax-get item 'Qualifiers_))
;    (lister (vlax-get item 'Security))
;    (lister (vlax-get item 'SystemProperties_))
 )
 (princ)
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

et bien,

ça se corse

entestant sur une machine qui n'est pas la mienne ça a donné ceci :

 

Availability : Nil

BytesPerSector : 512

Capabilities : (3 4)

CapabilityDescriptions : Nil

Caption : WDC WD400BB-23JHA1

CompressionMethod : Nil

ConfigManagerErrorCode : 0

ConfigManagerUserConfig : 0

CreationClassName : Win32_DiskDrive

DefaultBlockSize : Nil

Description : Lecteur de disque

DeviceID : \\.\PHYSICALDRIVE0

ErrorCleared : Nil

ErrorDescription : Nil

ErrorMethodology : Nil

Index : 0

InstallDate : Nil

InterfaceType : IDE

LastErrorCode : Nil

Manufacturer : (Lecteurs de disque standard)

MaxBlockSize : Nil

MaxMediaSize : Nil

MediaLoaded : -1

MediaType : Fixed hard disk media

MinBlockSize : Nil

Model : WDC WD400BB-23JHA1

Name : \\.\PHYSICALDRIVE0

NeedsCleaning : Nil

NumberOfMediaSupported : Nil

Partitions : 3

PNPDeviceID :

IDE\DISKWDC_WD400BB-23JHA1______________________06.01C06\5&99CB4D6&0&0.0.0

PowerManagementCapabilities : Nil

PowerManagementSupported : Nil

SCSIBus : 0

SCSILogicalUnit : 0

SCSIPort : 0

SCSITargetId : 0

SectorsPerTrack : 63

Signature : -858927923

Size : 40015987200

Status : OK

StatusInfo : Nil

SystemCreationClassName : Win32_ComputerSystem

SystemName : INSTITUT-1WGUMF

TotalCylinders : 4865

TotalHeads : 255

TotalSectors : 78156225

TotalTracks : 1240575

TracksPerCylinder : 255

dynamic : -1

Locale : 1033

provider : CIMWin32

UUID : {8502C4B2-5FBB-11D2-AAC1-006008C78BC7}

Availability : Nil

BytesPerSector : 512

Capabilities : (3 4 7)

CapabilityDescriptions : Nil

Caption : TS128MJFLASHA USB Device

CompressionMethod : Nil

ConfigManagerErrorCode : 0

ConfigManagerUserConfig : 0

CreationClassName : Win32_DiskDrive

DefaultBlockSize : Nil

Description : Lecteur de disque

DeviceID : \\.\PHYSICALDRIVE1

ErrorCleared : Nil

ErrorDescription : Nil

ErrorMethodology : Nil

Index : 1

InstallDate : Nil

InterfaceType : USB

LastErrorCode : Nil

Manufacturer : (Lecteurs de disque standard)

MaxBlockSize : Nil

MaxMediaSize : Nil

MediaLoaded : -1

MediaType : Removable media other than floppy

MinBlockSize : Nil

Model : TS128MJFLASHA USB Device

Name : \\.\PHYSICALDRIVE1

NeedsCleaning : Nil

NumberOfMediaSupported : Nil

Partitions : 1

PNPDeviceID : USBSTOR\DISK&VEN_&PROD_TS128MJFLASHA&REV_1.00\6&14D8C3D2&0

PowerManagementCapabilities : Nil

PowerManagementSupported : Nil

SCSIBus : Nil

SCSILogicalUnit : Nil

SCSIPort : Nil

SCSITargetId : Nil

SectorsPerTrack : 63

Signature : -399834890

Size : 123379200

Status : OK

StatusInfo : Nil

SystemCreationClassName : Win32_ComputerSystem

SystemName : INSTITUT-1WGUMF

TotalCylinders : 15

TotalHeads : 255

TotalSectors : 240975

TotalTracks : 3825

TracksPerCylinder : 255

dynamic : -1

Locale : 1033

provider : CIMWin32

UUID : {8502C4B2-5FBB-11D2-AAC1-006008C78BC7}

 

alors le numéro de série c'est UUID ou c'est le modèle.

je vais tester sur mon serial ata at voir.

 

en tout cas Bravo

Posté(e)

J'ai essayé le lien et il ne trouve pas mon disque dur :(

Pour le lisp, je l'ai testé sur deux pc identique et j'ai exactement le même résultat

A mon avis, ce n'est pas dans le numéro de serie du dd qu'il faut chercher à cause des sérial ATA

 

Tes deux disques dur

Model : WDC WD400BB-23JHA1

PNPDeviceID:IDE\DISKWDC_WD400BB-23JHA1______________________06.01C06\5&99CB4D6&0&0.0.0

Model : TS128MJFLASHA USB Device

PNPDeviceID:USBSTOR\DISK&VEN_&PROD_TS128MJFLASHA&REV_1.00\6&14D8C3D2&0

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

ah oué il a même vu :

MediaType : Fixed hard disk media

Model : ST3250624AS

....

Size : 250056737280

 

tout comme

 

Caption : Generic MMC/SD USB Device

et

Caption : Generic MS USB Device

 

oui oui oui :D

 

[Edité le 19/12/2006 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Allez, de quoi faire l'inventaire du pc

 

@+

 

(defun c:info(/ item meth1 meth2 process wmi)
 (defun lister(val / it)
   (vlax-for it val
     (princ (strcat "\n" (vlax-get it 'name) " : "))
     (if (vlax-get it 'value)
       (princ (vlax-get it 'value))
       (princ "Nil")
     )
   )
 )

 (vl-load-com)
 (setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
       meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil))
 (foreach process (list "BIOS" "Processor" "VideoController" "SoundDevice" "CDROMDrive" "OperatingSystem" "ComputerSystem" "PhysicalMemory" "DiskDrive")
   (setq meth2 (vlax-invoke meth1 'ExecQuery (strcat "Select * from Win32_" Process)))
   (princ (strcat "\nCaractéristiques " process " :"))
   (vlax-for item meth2
     (lister (vlax-get item 'Properties_))
     (lister (vlax-get item 'Qualifiers_))
     (getkword "\nAppuyez sur sur entrée pour continuer...")
   )
 )
 (vlax-release-object meth1)
 (vlax-release-object meth2)
 (vlax-release-object wmi)
 (princ)
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut

Je crois que j'ai trouvé ton numéro unique. C'est le numéro de serie du bios

Moi qui pensais que rien ne pouvais identifier un pc sur le web, ben avec ce numéro, c'est raté

 

@+

 

(defun c:serie(/ item meth1 meth2 ser wmi)
 (setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
       meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
       meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_BIOS"))
 (vlax-for item meth2
   (setq ser (vlax-get item 'SerialNumber))
 )
 (vlax-release-object meth1)
 (vlax-release-object meth2)
 (vlax-release-object wmi)
 ser
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Ben dit donc!....

Mais il ne me donne pas mon âge, c'est normal??? :P

 

Pour info, tes 2 dernières propositions fonctionnent même sur une 2000, au contraire des précédentes.

 

Je ne sais pas si je m'en servirais, mais en tout cas bravo pour tes recherches avec l'activeX.

 

C'est quand même puissant cette bestiole, même si c'est pas toujours compatible entre toutes les versions 200x.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Mais il ne me donne pas mon âge, c'est normal??? :P

Pour cela, il faut se brancher sur un port USB

La tension doit être de 3 ou 4V, donc pas de danger ;)

 

au contraire des précédentes.

Merci de me faire savoir. Ca a parfaitement fonctionné sur ma 2005 :exclam:

 

C'est quand même puissant cette bestiole, même si c'est pas toujours compatible entre toutes les versions 200x.

Et ce qui est terrible, c'est que cela peut fonctionner quelque soit le langage utilisé (java, c++, vbs, etc...)

Et encore, je pense que l'on ne voit que la surface des choses

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Je ne sais pas te répondre :( . Ca fonctionne chez moi et j'ai testé sur deux pc identique et ça m'a donné deux numéros différents

On tourne sur xp pro et ça vient peut-être de la ou plus simplement du constructeur qui n’a pas renseigné cette partie :casstet:

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

sur mon HP xw4400 c'est exactement le numéro de série qui est indiqué sur l'étiquette! super pour faire le relevé des machines installés :D

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Merci Patrick_35,

 

Comme tu dis pour le série du bios ça vient peut être du constructeur, par contre pour windows xp pro je ne comprends pas puisqu'il s'agit du bios. A priori il n'ya pas de rapports avec windows ou tout autre système d'exploitation ;)

 

J'ai testé sur mon pc du bureau ça marche nickel, je vais encore essayer de tester sur d'autres machines au cas où ;)

 

J'ai deux questions :

1- est-ce que ce numéro de série est toujours un chiffre exadécimal ?

2- est-ce qu'il est une chaine ? si oui y at-il un moyen pour traduire une chaine qui peut contenir des lettres, chiffres, autres caractères en un entier en convertissant toutes les lettres et les caractères autres que les chiffres en des entiers (en utilisant par exemple le code asci ou simplement en mettan des chiffres à la place des lettres et autres acaratères).

 

par exemple si la chaine est AC12365214-D41/15

 

on peut assigner à

A:2

C:9

D:13

-:0

Autres caractères : 4

 

ainsi ma chine devient [surligneur] 2[/surligneur] [surligneur] 9[/surligneur]12365214 [surligneur] 0[/surligneur] [surligneur] 13[/surligneur]41 [surligneur] 4[/surligneur]15

 

Autre question pour le code d'info du dique dur, l'information est-ce qu'elle est une liste ? comment extraire uniquement le numéro de série?

 

Merci beaucoup Patrick_35, tu es vraiment fort en lisp, chapeau

Posté(e)

je ne comprends pas puisqu'il s'agit du bios.

Heu oui, parfois je ne réflechit pas plus loin que le bout de ma souris

 

est-ce que ce numéro de série est toujours un chiffre exadécimal ?

Apparement

 

est-ce qu'il est une chaine

Pas sur les deux postes que j'ai testé ou ce n'est qu'un numéro

 

si oui

Je ne vois pas la finalité ? Si tu as un numéro unique, qu'importe de la manière qu'il soit construit du moment que tu le connais et que tu t'en sers tel quel

 

comment extraire uniquement le numéro de série?

Je n'ai pas la solution. Le lisp parcours tous les paramètres qu'il trouve et donne on nom ainsi que sa valeur. Donc si le numéro de série n'est pas dedans, tu ne le verras pas

 

Je viens de tester sur mon pc perso et idem, pas de numéro de serie sur le bios. Par contre, j'en ai trouvé un autre sur l'OperatingSystem

 

(defun c:serie2(/ item meth1 meth2 ser wmi)
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_OperatingSystem"))
(vlax-for item meth2
(setq ser (vlax-get item 'SerialNumber))
)
(vlax-release-object meth1)
(vlax-release-object meth2)
(vlax-release-object wmi)
ser
)

 

y at-il un moyen pour traduire une chaine qui peut contenir des lettres, chiffres, autres caractères en un entier en convertissant toutes les lettres et les caractères autres que les chiffres en des entiers

J'ai ces deux vieilles routines pour faire une conversion hexa en decimal et inversement

 

(defun hexdec (nb / r i s) 
 (if (= (type nb) 'INT)
   (setq nb (itoa nb))
  )
  (setq r 0 i 0)
  (while (and (= (type nb) 'STR) (< i (strlen nb)))
    (setq i (1+ i))
    (setq s (strcase (substr nb i 1 )))
    (setq r (+ (lsh r 4) (- (ascii s)
    (if (<= s "9")
      48
      55
     )))
   )
 )
)

(defun dechex (nb / r i) 
 (setq r "")
 (while (and (= (type nb) 'INT) (> nb 0))
   (setq i (rem nb 16))
   (setq nb (lsh nb -4))
   (setq r (strcat
             (if (< i 10)
               (itoa i)
               (chr (+ 55 i ))
             )
           r)
   )
 )
)

 

Merci beaucoup Patrick_35, tu es vraiment fort en lisp, chapeau

Ce n'est rien et merci pour le compliment

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut Patrick_35,

 

Je ne vois pas la finalité ? Si tu as un numéro unique, qu'importe de la manière qu'il soit construit du moment que tu le connais et que tu t'en sers tel quel

 

en fait je fais quelques opérations mathématiques la dessus pour en ressortir un autre numéro c'est pourquoi j'ai besoin d'un entier. si j'étais sûr que c'est un hexadécimal là pas de problème, j'ai déja un lisp pour cette conversion (merci pour les deux lisps que tu as posté). Par contre si c'est une chaine là je peux pas faire les dits calculs. c'est pourquoi j'ai besoin d'un lisp pour convertir une chaine en entier.

 

Je viens de tester sur mon pc perso et idem, pas de numéro de serie sur le bios. Par contre, j'en ai trouvé un autre sur l'OperatingSystem

 

reste à verifier si c'est unique et si ça ne change pas à chaque réinstallation de l'OS.

 

Merci pour ta générosité en temps et en effort.

 

@+

Posté(e)

si je rajoute un if ou cas où le numéro de série du bios serait vide est-ce que ça ferait l'affaire. je ne sais pas si ça marchera comme ça? Enfin je veux dire coté gestion d'erreurs. Par exemple si ce numéro donne " " (3espaces) ou "-" qu'est-ce que ça ferait?

 

 (defun c:serie(/ item meth1 meth2 ser wmi)
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_BIOS"))
(vlax-for item meth2
(setq ser (vlax-get item 'SerialNumber))
)
(vlax-release-object meth1)
(vlax-release-object meth2)
(vlax-release-object wmi)
[surligneur] (if (or (= ser nil) (ser ""))
(setq ser ser)
(setq ser "3AS21524")
)[/surligneur]ser
)

 

Merci

Posté(e)

oups j'ai inversé

 

(defun c:serie(/ item meth1 meth2 ser wmi)
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_BIOS"))
(vlax-for item meth2
(setq ser (vlax-get item 'SerialNumber))
)
(vlax-release-object meth1)
(vlax-release-object meth2)
(vlax-release-object wmi)
[surligneur] (if (or (= ser nil) (ser ""))
(setq ser "3AS21524")
(setq ser ser)
)[/surligneur]ser
) 

 

ça se voit que je suis fort en lisp! excuses

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité