I'm looking to generate a unique ID for a given run of a program, that will distinguish it from any other--previous, subsequent or concurrent--run of that program on that same system.
A counter seems like the most obvious choice. Since you all you care about is processes on a single system, keeping the counter in a file will work. Otherwise, I'd use a database, or a small CGI program to hand out counters.
I'm thinking to combine: process id with current date-time to the highest resolution available. Is that enough?
In practice, on an OS that assigns PIDs increasingly (wrapping around when a limit has reached), yes. In theory, you have a clash. And if you don't do the "date/time" properly, you'll have a potential problem around daylight saving times change-over.