Software Archive
Read-only legacy content

Security Key

kvrichardson
Beginner
409 Views
Hello-
I'd like to find a simple solution to protect our software from a customer copying it and/or using it on another machine. I'd like it to install once with a key, then prevent it from being installed elsewhere, and to have the .exe tied to that machine in some way.

I gather I need some sort of security key utility - trying to move into the 21st century and rid myself of dongles. Does anyone have any recommendations? It'd be nice to find one that works easily with DVF.
0 Kudos
8 Replies
Steven_L_Intel1
Employee
409 Views
You'll find such things to be unpopular nowadays... For example, what if the licensed machine breaks? The user can't then run the software on a backup system.

I haven't tried it myself, but the Polyhedron Licensing System supports CVF and claims to offer protection tied to a particular disk being present. I don't know if it can necessarily tie the .EXE to that disk.

The most popular commercial package is FLEXlm from Globetrotter, but it requires some use of Visual C.

Steve
0 Kudos
kvrichardson
Beginner
409 Views
I just found a good thread at http://groups.google.com in comp.lang.fortran (Subject: Software Security), with input from Steve Lionel of Compaq.

If you guys have anything to add to that, great. Otherwise, I'll assume www.globetrotter.com or www.paceap.com are my recommended destinations.
Thanks,
Keith
0 Kudos
kvrichardson
Beginner
409 Views
Thanks, Steve. I'm hearing you in stereo.
0 Kudos
kvrichardson
Beginner
409 Views
Polyhedron relies mostly on the hard drive serial number for security.

I can't get a modified version of DVF sample DRIVES (samplesadvancedwin32drives) to pick up the serial number. I just replaced NULL with lpVolumeSerialNumber (integer) and made the call. Any help would be appreciated.

bRC = GetVolumeInformation( &
lpszdrivename, &
Volume, &
50, &
lpVolumeSerialNumber, &
NULL, &
NULL, &
lpszSystemName, &
32)

Regards,

Keith
0 Kudos
kvrichardson
Beginner
409 Views
Steve - am I way off base on that request? Or does it involve too much tweaking? The serial number is an element in that array returned - why can't I get it to work?

Thanks,

Keith
0 Kudos
Steven_L_Intel1
Employee
409 Views
Please note - this is a user message board. I participate, but can't promise to respond to every question.

The argument here is a pointer, so you need to pass LOC(lpVolumeSerialNumber) to make it work.

Steve
0 Kudos
kvrichardson
Beginner
409 Views
I showed my ignorance in two respects!

Thanks for responding.
Keith
0 Kudos
Intel_C_Intel
Employee
409 Views
Hi, Keith. Don't be too hard on yourself :). The fact that LOC(lpVolumeSerialNumber) is needed is a byproduct of a poor language mapping from Fortran to C that MS used in the FPS interface blocks for Win32 APIs. There is no sound reason to have to use LOC here. Instead the reference attribute should have been applied to this parameter in the interface block.

CVF supports these interfaces for backward compatibility with FPS. I thought that a solution for supporting both the old interfaces and newer (better?!) interfaces was coming. Maybe in version 6.6. :)

-John
0 Kudos
Reply