Я пробовал следующий фрагмент кода, который не работает. То, что я пытаюсь сделать, - это запустить исполняемый файл (тот, который я создал в виде простого диалогового приложения с использованием VC6.0), а затем внутри этого приложения изменить свое собственное содержимое, хранящееся на жестком диске.
Итак, есть запущенная копия exe, и из этой запущенной копии она откроет копию диска в буфер. После загрузки в буфер начните поиск строки. Как только строка будет найдена, она будет заменена другой строкой, размер которой может отличаться от исходного.
Сейчас у меня проблема с невозможностью открыть файл на диске для чтения / записи. GetLastError возвращает следующую ошибку «ERROR_SHARING_VIOLATION Процесс не может получить доступ к файлу, потому что он используется другим процессом.».
Итак, что я сделал, я переименовал файл на диске в другое имя (необходимо то же имя, за исключением расширения). Та же ошибка снова о нарушении обмена. Я не уверен, почему я получаю этот код ошибки нарушения обмена 32. Любые предложения будут оценены. Я задам вторую часть вопроса в другой ветке.
FILE * pFile;
pFile = fopen ("Test.exe","rb");
if (pFile != NULL)
{
// do something like search for a string
}
else
{
// fopen failed.
int value = GetLastError(); // returns 32
exit(1);
}