下の関数を使えばできます.って手抜きか・・・. 関数の引数について LPSTR LinkFileName //*.lnkであらわされるファイル実際にはこの名前のファイルが生成 LPSTR LinkedFileName //Linkされるファイルの名前リンク先のファイル名 LPSTR WorkingDirectory //Link先のファイルを実行した場合の初期ディレクトリ LPSTR ArgvStrings //Linkされたファイルを開く場合の引数ShellExecuteを使った場合のパラメータに相当するはず LPSTR lpDescription //Descriptionよく分からない,分からなくても多分困らない やり方は下のを使えばできます. その外はあまりよく分からずにかいてます. HRESULT CreateShortCut(LPSTR LinkFileName,LPSTR LinkedFileName, LPSTR WorkingDirectory,LPSTR ArgvStrings,LPSTR lpDescription) { HRESULT hResult; IShellLink * pShellLink; IPersistFile * pPersistFile; wchar_t SaveLinkName[MAX_PATH]; ::CoInitialize(NULL); hResult=::CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID FAR*)&pShellLink); if (SUCCEEDED(hResult)) { pShellLink->SetArguments(ArgvStrings); pShellLink->SetDescription(lpDescription); pShellLink->SetWorkingDirectory(WorkingDirectory); pShellLink->SetIconLocation(LinkedFileName,0); pShellLink->SetPath(LinkedFileName); hResult = pShellLink->QueryInterface(IID_IPersistFile,(LPVOID*)&pPersistFile); if(SUCCEEDED(hResult)) { MultiByteToWideChar(CP_ACP,0,LinkFileName,-1,SaveLinkName,MAX_PATH); hResult=pPersistFile->Save(SaveLinkName, TRUE); pPersistFile->Release(); } pShellLink->Release(); } ::CoUninitialize(); return hResult; }