PDA

Tam Sürümünü Görmek İçin : Harddisk e ait unique bir numarayi C ile bulmak?


Huzeyfe
19/10/2002, 11:35
Bilgisayarda bulunan harddisk e ait oyle bir iz alacagimki bu iz baska bir harddiske uymayacak,yani bir program yazildiginda bu program bilgisayardaki hd numarasi(varsa?)alacak kayit edecek ve baska bilgisayar gidince ayni numara degilse calismayacak,harddiske ait boyle bir numara varmıdır?varsa cile nasil kontrol ettirebilecegime dair kaynak bilen?


ee++
20/10/2002, 11:57
Selamlar,

Bunu yapabilmek icin Standart C'den biraz fazlasi gerekiyor. Genelde Windows platformunda orneklenen bir kac yontem var:

1. C + Assembly
2. absread() (dos.h)
3. intdos() (dos.h)
4. GetVolumeInformation() (WinAPI)

Son yontemi ornekleyelim:

#include <stdio.h>
#include <windows.h>

char VolumeNameBuffer[256];
unsigned long VolumeSerialNumber;
long MaximumComponentLength;
long FileSystemFlags;
char FileSystemNameBuffer[256];

int main()
{
GetVolumeInformation(
"C:\\",
VolumeNameBuffer,
sizeof(VolumeNameBuffer),
&VolumeSerialNumber,
&MaximumComponentLength,
&FileSystemFlags,
FileSystemNameBuffer,
sizeof(FileSystemNameBuffer)
);

printf("%u", VolumeSerialNumber);
getchar();
return 0;
}

Bu kod tam olarak Win32 kurallarina uygun degil ama elimde olmayan tiksinti sebepleri ile boyle yazdim. Is goruyor sanirim. Tabi burada program "C:\" ile calisiyor. Bu parametrik bir hale getirilebilir.

GetVolumeInformation islevinin de yapisini vereyim, MSDN'den de bulunabilir:

BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // root directory
LPTSTR lpVolumeNameBuffer, // volume name buffer
DWORD nVolumeNameSize, // length of name buffer
LPDWORD lpVolumeSerialNumber, // volume serial number
LPDWORD lpMaximumComponentLength, // maximum file name length
LPDWORD lpFileSystemFlags, // file system options
LPTSTR lpFileSystemNameBuffer, // file system name buffer
DWORD nFileSystemNameSize // length of file system name buffer
);

Diger yontemler icin su baglantilar incelenebilir:

http://www.codeguru.com/system/HardwareInfo.shtml
http://cszero.sc.maricopa.edu/forums/cis162/messages/32.html
http://cszero.sc.maricopa.edu/forums/cis162/messages/112.html

Kolay gelsin.

(Yeterli mi Huzeyfe?)

Huzeyfe
20/10/2002, 12:19
Tesekkurler,detaylar icin linkleri inceliyorum