There's an official Microsoft tool for changing the volume ID on a drive: http://technet.microsoft.com/en-us/sysinternals/bb897436.aspx. Using the volume ID as a simple licensing mechanism is well-known, and the workaround to break such simple licensing mechanisms is also well-known - among a certain type of user, or among people who are prepared to do a little digging.
Like I said before, "the means which is used for identifying a computer has to be a compromise between security and practicability". I'm sure that use of GetVolumeInformation() has worked very well for you, and will continue to do so. But you have chosen - perfectly validly - a compromise which leans towards simplicity rather than security.
And there remains the fact that any protection which is implemented solely through MQL4 code is very vulnerable to decompilation.
puncher, there you go
Something is wrong:
How to reference to SystemDriveSerialNumber function ?
Do you know that everybody who is interested in pirating and reselling your EA will simply (routinely) decompile it and remove whatever sophisticated serial-number protection you put into it in not more than 2 minutes time?
You should run the essential parts of your strategy on a server and not inside the EA and make some kind of subscription service where paying users have login/password. The EA would connect to the server, authenticate, send some data and get its trading signals or some complicated calculation results back.
& the serial no. from the disk can be change too
In my opinion you need to store some or all of the code in a server That the EA should connect to the server & read the code from there
& get buy/sell signals
But I still not able to use this function, can you please give an example?