我一直在嘗試下面那段不起作用的代碼。我試圖做的是開始執行我的exe文件(我使用VC6.0創建了一個簡單的基於對話框的應用程序),然後從該應用程序內部修改其存儲在硬盤上的內容。收到共享衝突打開文件代碼32
因此,有一個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);
}
你究竟在努力完成什麼? – user786653
感謝您的回覆。首先,我不想寫任何可能被認爲是惡意的東西。我只是試圖學習如何修改位於硬盤上的文件,但修改的細節將來自同一個硬盤文件的運行實例。沒有更多的那個。欣賞答覆。 – user743543
那麼取決於你想要做什麼,像[WriteProcessMemory](http://msdn.microsoft.com/en-us/library/ms681674 \(VS.85 \).aspx)可能是你真的在之後。 – user786653