при запуске программы, её exe-файл на диске, как правило, блокируется системой от изменений, так вот, можно ли его подменить другим файлом, причём обновление должна совершить сама же запущенная программа ?
нужно снять блокировку файла от изменений... причём это должно работать на всех системах семейства Windows
1) Документированный вариант - произвести отложенное копирование и сделать перезагрузку компа. 2) Другой нормальный вариант - сделать мини-программку которая скопирует старый файл в новый и запустит новый, а из основной программы сделать CreateProcess / ExitProcess и все. Мини-программка скопирует файлы нормально, потому как основная программа уже завершались и запустит новую. 3) Ну и совершенно бешеный вариант - подгрузить драйвер ядра или иным способов перейти в кернел мод, а там уже сменить права доступа к файлу проги на read/write.
В юзермоде без помощи постороннего кода (который будет исполнятья после завершения твоего процесса) это в общем случае сделать нельзя. В ядре есть не мало способов - почитай, хотя бы, статью ms-rem про работу с занятыми файлами. Вообще, мне кажется это уже не первая подобная тема за последние пару дней...