毎々お世話になっております。
MFC+WinXPです。
「C:\Documents and Settings\All Users\スタート メニュー\プログラム」にショートカットのアイコンが表示されません。同じコードで、
「C:\Documents and Settings\自分\スタート メニュー\プログラム」には
アイコンが表示されます。
何が足りないのでしょうか?もしご存知の方がおられればご教授下さい。
コードは、
RegOpenKeyEx(HKEY_CURRENT_USER, sub_sta, 0, KEY_READ, &m_KeyHandle);
// RegOpenKeyEx(HKEY_LOCAL_MACHINE, sub_sta, 0, KEY_READ, &m_KeyHandle);
・
・
・
CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (void**)&_piLink);
_piLink->QueryInterface(IID_IPersistFile, (void**)&_piFile);
_piLink->SetPath(program);
_piLink->SetDescription(_T("LuckyHunter3"));
_piLink->SetWorkingDirectory(g_Page2Directory);
_piLink->SetIconLocation(program, 0);
MultiByteToWideChar(CP_ACP, 0, shortcut, -1, szFileName, MAX_PATH);
_piFile->Save(szFileName, TRUE);
_piFile->Release();
CoUninitialize();
よろしくお願いします。
>MultiByteToWideChar(CP_ACP, 0, shortcut, -1, szFileName, MAX_PATH);
>_piFile->Save(szFileName, TRUE);
↑のszFileNameをどうやって取得しているかが問題ではないでしょうか。
「All Users」でアイコンが作成?されない時の各関数の成否情報程度は出して欲しかった…
> 何が足りないのでしょうか?
「\All Users\スタート メニュー\プログラム」フォルダのアクセス権
っていうのを可能性の一つとして挙げておく
subaruさん gakさん
ありがとうございました。
私もパーミッション疑ったんですが、
単純にRegQueryValueExのキーの名前を間違っていました。
subaruさんのヒントが効きました!
お恥ずかしい・・・
何かありましたらまたお願いしますorz
解決してなによりですがスタートメニューのパスは
SHGetSpecialFolderLocationかSHGetSpecialFolderPathで
CSIDL_STARTUP/CSIDL_COMMON_STARTUPを指定して取得できるので
わざわざレジストリを見に行く必要はないように思えますが・・・
ツイート | ![]() |