visual c++に基づくwindowsコアプログラミングコード分析(26)ファイル関連を実現

1562 ワード

ファイル関連付けとは、1つのタイプのファイルを開くことができるプログラムと依存関係を確立することです.
例えば、Windowsにおけるビットマップファイル(BMPファイル)のデフォルトの関連付けプログラムは「グラフ」であり、そのデフォルトの関連付けをACDSeeプログラムで開くように変更すると、ACDSeeはそのデフォルトの関連付けプログラムとなる.
1つのファイルを複数のアプリケーションに関連付けることができます.ファイルの「開く方法」を使用して、関連選択を行うことができます.また、誤操作によるエラーファイルの関連付けを削除したり、必要に応じてファイルの関連付けを新規作成したり、ソフトウェアによってはファイルの関連付けを復元したりすることもできます.
ファイル関連も多くの流行ウイルス、木馬がよく利用する隠蔽と自動運転手段である.
次はVC++で直接コードでファイル関連を実現します.
 
 
#include <stdio.h>
#include <windows.h>
int main(int argc,char *argv[])
{
MessageBox(NULL,"Hello",NULL,MB_OK);
char temp[256];
memset(temp,0,256);
if(argc!=1){
int length =strlen(argv[1]);
char *ch=(char *)malloc(length);
strcpy(ch,argv[1]);
for(int i=0;i<length;i++,ch++)
{
if(*ch=='\\')
strncat(temp,"\\\\",2);
else strncat(temp,ch,1);
}
}//              "\"  "\\"
char str[]="\"%1\" %*";  
RegSetValue(HKEY_CLASSES_ROOT,"exefile\\shell\\open\\command",REG_SZ,(LPCTSTR)str,strlen(str)+1);
//                  ,   ShellExecute           。
ShellExecute(NULL,"open",temp,NULL,NULL,SW_SHOW);//       
//        ,                  
TCHAR filename[256];
//         
GetModuleFileName( NULL, filename, 255 );
strcat(filename," \"%1\" %*");
RegSetValue(HKEY_CLASSES_ROOT,"exefile\\shell\\open\\command",REG_SZ,(LPCTSTR)filename , strlen(filename) + 1);
//                    start    。                            。
  
return 0;
}

 
テキストリンク:http://blog.csdn.net/yincheng01/article/details/7213755