Nếu bạn có quyền kiểm soát các ứng dụng (như là ngụ ý từ câu hỏi của bạn), một cách tốt đẹp để làm điều này là để tạo ra một tập tin đối tượng lập bản đồ tên sớm trong tiến trình khởi động. Điều này tương tự như gợi ý tạo một mutex từ RedLEON.
// Add this into the application you wish to update
CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READONLY, 0, 32, 'MAIN-PROGRAM');
// Note: Mapping object is destroyed when your application exits
// Add this into your updater application
var
hMapping: HWND;
begin
hMapping := CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READONLY, 0, 32, 'MAIN-PROGRAM');
if (hMapping <> 0) then
begin
if (GetLastError() = ERROR_ALREADY_EXISTS) then
ShowMessage('Application to update is already running!');
end;
Kiểm tra MSDN documentation on CreateFileMapping để biết thêm chi tiết.
Xem thêm câu trả lời được chấp nhận cho this question bao gồm câu trả lời của Luke và cung cấp các giải pháp bổ sung.