Recently somebody asked the Hard Drive serial number in vb.net. The easy answer of course was to use VBScript with the WMI classes. Actually, this is gets the "Volume" serial number, not the hard-coded manufacturer ' s hard drive-serial number, which needs to Be retrieved with custom software, can vary by drive manufacturer. The "Volume" serial number is created to format a drive, and it can be changed without, reformatting in PRA Ctice people rarely.
I thought it might be a good experiment to try and do this using the native Windows API "GetVolumeInformation" instead, WH Ich requires P/invoke, in C #. This can is useful information for software and control developers as it can is used to verify licensing for a single comp Uter. For example, on installation we could read the Volume serial number of the the user's c:drive in our Internet registration mo Dule, and have it submit this to a webservice which uses the number as the encryption key for a valid license key to "Unlo CK "The product, which would then is stored in the registry. If Somebody attempted to install a Single-computer license product on another machine, the key would is invalidated.
The important issue with many of the API ' s are ' you have to get the parameter types correct for them to work with P/INV Oke from managed code.
With "GetVolumeInformation", the signature looks as follows:
Note that some of the ' parameters ' you would to would be of type ' int ' must be passed as "UInt32", which corresponds to the. NET type "uint", and oftentimes a string must is passed as StringBuilder.
The actual method, with a string return value for convenience, looks like this:
public string getvolumeserial (string strdriveletter)
{
UINT Sernum = 0;
UINT Maxcomplen = 0;
StringBuilder Vollabel = new StringBuilder (256); Label
UInt32 volflags = new UInt32 ();
StringBuilder fsname = new StringBuilder (256); File System Name
strdriveletter+= ": \ \"; Fix up the passed-in drive the ' API call
Long Ret = GetVolumeInformation (Strdriveletter, Vollabel, (UInt32) vollabel.capacity, ref sernum, ref Maxcomplen, ref VolF Lags, FSName, (UInt32) fsname.capacity);
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.