Software Archive
Read-only legacy content

Security Key

kvrichardson
初学者
1,295 次查看
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 项奖励
8 回复数
Steven_L_Intel1
1,295 次查看
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 项奖励
kvrichardson
初学者
1,295 次查看
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 项奖励
kvrichardson
初学者
1,296 次查看
Thanks, Steve. I'm hearing you in stereo.
0 项奖励
kvrichardson
初学者
1,295 次查看
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 项奖励
kvrichardson
初学者
1,295 次查看
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 项奖励
Steven_L_Intel1
1,295 次查看
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 项奖励
kvrichardson
初学者
1,295 次查看
I showed my ignorance in two respects!

Thanks for responding.
Keith
0 项奖励
Intel_C_Intel
员工
1,295 次查看
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 项奖励
回复