Article View: borland.public.cppbuilder.deployment
Article #263Re: software protection
From: zhan wei ming
Date: Thu, 30 Sep 2004 16:38
Date: Thu, 30 Sep 2004 16:38
152 lines
5968 bytes
5968 bytes
But I cannot get diskid using the downloaded code. it always get error
although I can get the disk info using the diskid32.exe.
the function is attached below,
long GetDiskID()
{
// Windows NT, Windows 2000, Windows XP - admin rights not required
int done = FALSE;
int drive = 0;
//for (drive = 0; drive < MAX_IDE_DRIVES; drive++)
{
HANDLE hPhysicalDriveIOCTL = 0;
// Try to get a handle to PhysicalDrive IOCTL, report failure
// and exit if can't.
char driveName [256];
sprintf (driveName, "\\\\.\\PhysicalDrive%d", drive);
// Windows NT, Windows 2000, Windows XP - admin rights not
required
hPhysicalDriveIOCTL = CreateFile (driveName, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
// if (hPhysicalDriveIOCTL == INVALID_HANDLE_VALUE)
// printf ("Unable to open physical drive %d, error code: 0x%lX\n",
// drive, GetLastError ());
if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
{
STORAGE_PROPERTY_QUERY query;
DWORD cbBytesReturned = 0;
char buffer [10000];
memset ((void *) & query, 0, sizeof (query));
query.PropertyId = StorageDeviceProperty;
query.QueryType = PropertyStandardQuery;
memset (buffer, 0, sizeof (buffer));
if ( DeviceIoControl (hPhysicalDriveIOCTL,
IOCTL_STORAGE_QUERY_PROPERTY,
& query,
sizeof (query),
& buffer,
sizeof (buffer),
& cbBytesReturned, NULL) )
{
STORAGE_DEVICE_DESCRIPTOR * descrip =
(STORAGE_DEVICE_DESCRIPTOR *) & buffer;
char serialNumber [1000];
strcpy (serialNumber,
flipAndCodeBytes ( & buffer [descrip ->
SerialNumberOffset]));
if (0 == HardDriveSerialNumber [0] &&
// serial number must be alphanumeric
// (but there can be leading spaces on IBM drives)
(isalnum (serialNumber [0]) || isalnum (serialNumber
[19])))
strcpy (HardDriveSerialNumber, serialNumber);
}
else
{
//my problem��always enter here!!!
DWORD err = GetLastError ();
}
memset (buffer, 0, sizeof (buffer));
CloseHandle (hPhysicalDriveIOCTL);
}
}
long id = 0;
if (HardDriveSerialNumber [0] > 0)
{
char *p = HardDriveSerialNumber;
//WriteConstantString ("HardDriveSerialNumber",
HardDriveSerialNumber);
// ignore first 5 characters from western digital hard drives if
// the first four characters are WD-W
if ( ! strncmp (HardDriveSerialNumber, "WD-W", 4)) p += 5;
for ( ; p && *p; p++)
{
if ('-' == *p) continue;
id *= 10;
switch (*p)
{
case '0': id += 0; break;
case '1': id += 1; break;
case '2': id += 2; break;
case '3': id += 3; break;
case '4': id += 4; break;
case '5': id += 5; break;
case '6': id += 6; break;
case '7': id += 7; break;
case '8': id += 8; break;
case '9': id += 9; break;
case 'a': case 'A': id += 10; break;
case 'b': case 'B': id += 11; break;
case 'c': case 'C': id += 12; break;
case 'd': case 'D': id += 13; break;
case 'e': case 'E': id += 14; break;
case 'f': case 'F': id += 15; break;
case 'g': case 'G': id += 16; break;
case 'h': case 'H': id += 17; break;
case 'i': case 'I': id += 18; break;
case 'j': case 'J': id += 19; break;
case 'k': case 'K': id += 20; break;
case 'l': case 'L': id += 21; break;
case 'm': case 'M': id += 22; break;
case 'n': case 'N': id += 23; break;
case 'o': case 'O': id += 24; break;
case 'p': case 'P': id += 25; break;
case 'q': case 'Q': id += 26; break;
case 'r': case 'R': id += 27; break;
case 's': case 'S': id += 28; break;
case 't': case 'T': id += 29; break;
case 'u': case 'U': id += 30; break;
case 'v': case 'V': id += 31; break;
case 'w': case 'W': id += 32; break;
case 'x': case 'X': id += 33; break;
case 'y': case 'Y': id += 34; break;
case 'z': case 'Z': id += 35; break;
}
}
}
return id;
}
"Vladimir Stefanovic" <spam@not.needed> wrote in message
news:415afa73@newsgroups.borland.com...
> > does the diskid32 support windows xp?
>
> Of course...
>
> Best regards,
> Vladimir Stefanovic
>
>
>
Technical Details
Message-ID:
<415c36a7@newsgroups.borland.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!gatel-ffm!gatel-ffm!194.25.134.126.MISMATCH!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mailReferences:
<4156396e@newsgroups.borland.com> <41565a41@newsgroups.borland.com> <41598a43@newsgroups.borland.com> <415afa73@newsgroups.borland.com>Show Full Headers
Complete Article Headers
X-Google-Thread: f8e54,49c3dd80669ecd88 X-Google-Attributes: gidf8e54,public X-Google-Language: ENGLISH,ASCII From: "zhan wei ming" <zhanweiming@hotmail.com> Newsgroups: borland.public.cppbuilder.deployment References: <4156396e@newsgroups.borland.com> <41565a41@newsgroups.borland.com> <41598a43@newsgroups.borland.com> <415afa73@newsgroups.borland.com> Subject: Re: software protection Date: Fri, 1 Oct 2004 00:38:53 +0800 Lines: 154 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1409 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 NNTP-Posting-Host: 211.136.158.33 Message-ID: <415c36a7@newsgroups.borland.com> X-Trace: newsgroups.borland.com 1096562343 211.136.158.33 (30 Sep 2004 09:39:03 -0700) Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!gatel-ffm!gatel-ffm!194.25.134.126.MISMATCH!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail