お世話になります。
以下をビルド、C:\test.exeとし、
実行してもCreateFile()が失敗してしまいます。
GetLastError()はERROR_SHARING_VIOLATIONを返しました。
自分自身をCreateFile()で開くことは出来ないのでしょうか。
------------[test.cpp]------------------
#include<windows.h>
int main(){
HANDLE
handle=CreateFile(C:\\test.exe,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
MessageBox(NULL,(handle!=INVALID_HANDLE_VALUE)?成功:失敗,NULL,MB_OK);
return 0;
}
---------------------------------------
>GetLastError()はERROR_SHARING_VIOLATIONを返しました。
共有違反…ってところですかね。
http://support.microsoft.com/kb/316609/ja
実行中のexeファイルはOSによってロックされています。
よって……
GENERIC_READ|GENERIC_WRITE
書き込みは出来ませんし、
FILE_SHARE_READ|FILE_SHARE_WRITE
書き込み許可で共有することも出来ません。
瀬戸っぷさん、回答有難うございます。
無事動作を確認しました。