Feedback Search Top Backward Forward

Questions and Answers

Written by Larry Salomon, Jr. et al.


To Protect or Not (To Bother)?

Henrik Falk ( writes:

"I have a little comment on your artichle in EDM/2 2-10 on copy-protection. Your idea about using the volume serial number for copy protection only works for copy programs which doesn't copy the serial number. One famous program of that category is DISKCOPY.

I don't know if American computer users are that naive or they just don't know the fact that a good copy program copies the volume serial number as well.

In Europe, we all use that kind of copy programs. Not because we are less software pirates than Americans but because we like powerful utilities. Europeans don't like copy-protection. <grin>

I didn't mean to offend you with this letter! It was a great article and I think this soft-copy-protection discussion is fine. As a developer you'll have to protect you work in a certain degree."

EDM/2 responds:

A number of people have mentioned limitations with the copy-protection scheme presented in the article, but this is one of the more serious ones because it limits the effectiveness to preventing only those users who haven't acquired a "good" copy protection program. Thank you for your feedback.

Ed Rozmiarek ( writes:

"I just downloaded EDM/2 Volume 3, Issue 1 and read that you never seem to get responses to your magazine. Well, I wanted to let you know that I have every issue and have at least browsed through every one. I have read several of the articles and found some tricks and techniques that I can use.

I wanted to make a comment on December's article on copy protection. I know there is no fool-proof and perfect form of copy protection, but there is one problem with the method you described. It has to do with backup copies of the product diskettes. The first thing I do when I get a new product is make backup copies of the product diskettes and then install from the backups. (I have run into one to many program install problems that trash the install disk). With the method you described in the article, I would not be able to make backup diskettes since the backups would have a different Volume Serial Numbers and therefore would not install.

One topic I would like to see in a future article is related to copy protection. It is, what is the best technique(s) for locking/unlocking features within a shareware program without having a completely different version. For example, the SIO drivers by Ray Gwynn have a "nag" screen that displays for the unregistered version. Once you register the screen goes away. If you download a newer version, you run a program to reregister the new version. Also, some programs may have limited features or options in the unregistered version. Once you enter some unique number, the features will unlock."

Larry Salomon Jr. responds:

It should be a trivial matter to include an additional license on the disks and write a "validator" program which, after the buyer makes the backup copy, reduces the license count by one on the original disks and initializes the license count to one on the backup copy.

Disabling features and having "nag" screens are common techniques for encouraging users to register shareware, but these non-prohibiting methods of encouraging payment are usually too specific to each application to be dealt with properly in an "all encompasing" article. I'll give the matter some thought to see if a followup should be done for this tangent.

More Feedback Than A Biorhythm

Juergen Wagner ( writes:

"In EDM/2 Jan 1995 you asked for some feedback about PM- Programing.

Well, here it is. I really have to say thank you for some really great hints on all this stuff. Since I am writing a UUCP package for OS/2 including Mailreader and Newsreader I need every help I can get. And you give me exactly what I need right now.

You also asked, if we would like to see some topics in detail. Well, here is something that really bothers me. I need a dialog element, that gives me the functionality of a spread sheet. That is:

  1. A field of Editlines, where the programmer can define how many they want
  2. Variable wide of each column
  3. Scrollbars to scroll through all of the Editlines

I think of something looking like this:

It should be possible, to edit each field and to put it in a dialog window. If you know how to do something like this, that would be an idea for EDM/2.

Another topic could be Drag-and-Drop, and how to print with the Printer Subsystem, and a closer look at the container control.

I hope, you can draw some ideas out of these suggestions.

Keep on this good work."

EDM/2 responds:

Taken under advisement. Thank you for your feedback.

Galen Rhodes ( writes:

"You asked for feedback for the PM Programming section of EDM/2.

First off, thanks for EDM/2! I am new to OS/2 programming. Having spent a great deal of time programming for the early 8-bit Commodore Computers (I wrote assembly language utilities for the C64 and C128), I have in the past 3 years moved to DOS, Windows and now OS/2 because I enjoy it's power. I was shocked to see the lack of available information on OS/2 considering it's been out since the late 80's. I was also shocked bacause I was use to the excellent coverage the Commodore computers got. I find EDM/2 to be a very helpful resource for bringing me up to speed on OS/2. Please keep up the good work.

I would like to see a very in-depth coverage of notebooks. This seems to be an area that gets very superficial, if no treatment at all. I enjoyed Larry Salomon's book on OS/2 PM Programming (The Art of OS/2 2.1 C Programming) but even it gave a very light touch on the subject and didn't cover it in as much detail as I would have liked.

Also I would like to see the MMPM API covered as it pertains to PM programming. So far I have only seen a few references on the net to MMPM programming and they are mostly REXX examples."

EDM/2 responds:

Also taken under advisement. Thank you for your feedback.

Future Topics and More on Copy Protection

Brian DeWeese ( writes:

"In the last issue of EDM3-1 (Jan.) you asked for ideas and comments at the end of "Intro to PM" section. You mentioned that you had covered the same subject twice and no one had commented on that fact. Normally, I skip over that section since I'm a fairly experienced PM developer and that is an intro section. But I have looked at some of them and they are well written.

Anyway, I have a couple of ideas for your column, but they may be too advanced of subjects for it.

  1. Discuss and easy way to add toolbar like buttons on the title bar. These buttons are similar to the buttons used in the IPMD debugger. And they are simply created by retrieving the handle of the minmax buttons (they are actually a menu bar control) and adding some new menu item entries that are MIS_BITMAP.
  2. Discuss implementing the new UCMenus toolbar available from IBM. It's a very robust control and it appears that several commercial/shareware packages will soon be released using this control. IBM's new EPM editor uses it. It can help sharpen the image of OS/2 apps.
  3. Subclassing. This can be a tricky subject to tackle when you take into consideration that, A) you don't really what to store your "previous proc address" in a global variable, and B) consider the impact when your subclass may be one of several others, some of the others may be out of your control. How do you ensure that they call your subclass rather than the default winproc, etc. Lots of issues there. I've written some functions that store the prev proc address and private data in a link list per subclass and it address some of the issues but not all.
    1. Subclassing windows that don't belong to your application. What are the implications? etc.
    2. Superclassing, how and when should it be done.
  4. Discuss dragging and dropping to/from the desktop (WPS). Performing Drag 'n Drop within your own application is one thing but I'd like to know more about the implications of integrating a non-WPS application with the WPS by accepting drag operations from it, etc.

These ideas are a little vague and if any interest you, I'll be happy to discuss them with you.

Also, I just now got around to reading EDM2-11 (Dec) and read your article on copy protection. You asked for comments. Copy protection is something that I have given a lot of thought to but have never come up with the 'ideal' solution. Your idea has merits but there are a couple of things that I do not like about it.

  1. The user is not allowed to make backup copies of his software, at the min. 1 copy should be allowed to be created.
  2. What about shareware that is downloaded as a .zip file and installed after unzipping it and never sees a diskette? Should it be crippled and if the user wishes to purchase it, then send him a diskette? etc.

It's a controversial subject, one that I am interested in. Perhaps I'll start a thread on this subject somewhere and see what gets flushed out.

Thank you for your work on the EDM issues. Your efforts are appreciated."

EDM/2 responds:

Items 1-4 are taken under advisement, but you are correct in your assessment that the topics are a bit advanced for an introductory programming column.

Referring to item 1 in the section about copy protection, a suggested answer to this was presented earlier in this section. Item 2 is an interesting notion for which the following suggested solution is presented:

Write a "self-extracting" installation program which has the .ZIP file as a user-defined resource. The program calls DosGetResource(), writes the .ZIP file to disk, and then spawns the UNZIP utility available from the Info-ZIP package. After the unzipping is complete, the .ZIP file is deleted.

Thank you for your feedback.