Avevo pressapoco capito la problematica, ma pensavo si riferisse ad applicazioni residenti sulla stessa macchina.

In questo caso, come hai detto tu, diventa effettivamente molto difficile gestire manualmente un meccanismo di blocco in modo sicuro ed efficiente. Il problema che indice maggiormente è quello della terminazione anomala delle applicazioni.

Forse potresti predisporre un'applicazione, o meglio un servizio in grado di monitorare gli accessi. Questo servizio, attivo sul server, raccoglie le richieste di accesso ai dati da parte delle applicazioni. Ciascuna applicazione fa la richiesta al servizio in qualche modo per sapere se un'altra applicazione sta utilizzando i dati; in caso negativo, prende il possesso di questo "semaforo virtuale centralizzato" e opera sui dati. Magari si potrebbe dotare ogni applicazione di un thread che invii notifiche di presenza al servizio; quando l'applicazione viene terminata in modo anomalo, anche il thread di presenza si interrompe...passati n minuti dall'ultima notifica, il servizio potrebbe rilasciare il blocco sui dati eventualmente posseduto da quella applicazione.

Questa è solo un'idea ovviamente...certo che implementare una cosa simile non è facile! Secondo me, considerando le fasi di sviluppo e di test, faresti prima a valutare un eventuale porting dei tuoi database in un formato che sia in grado di gestire più utenti (InterBase è in grado di farlo).

Ciao!