自分自身をCreateFile()で開くには。 – プログラミング – Home

自分自身をCreateFile()で開...
 
通知
すべてクリア

[解決済] 自分自身をCreateFile()で開くには。


六田
 六田
(@六田)
ゲスト
結合: 11年前
投稿: 2
Topic starter  

お世話になります。
以下をビルド、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;
}
---------------------------------------


引用未解決
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

>GetLastError()はERROR_SHARING_VIOLATIONを返しました。

共有違反…ってところですかね。
http://support.microsoft.com/kb/316609/ja

実行中のexeファイルはOSによってロックされています。
よって……
GENERIC_READ|GENERIC_WRITE
書き込みは出来ませんし、
FILE_SHARE_READ|FILE_SHARE_WRITE
書き込み許可で共有することも出来ません。


返信引用
六田
 六田
(@六田)
ゲスト
結合: 11年前
投稿: 2
Topic starter  

瀬戸っぷさん、回答有難うございます。
無事動作を確認しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました