ショートカットの作成について

解決


東京みやげ  2007-11-01 10:20:41  No: 66715  IP: 192.*.*.*

毎々お世話になっております。
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();

よろしくお願いします。

編集 削除
subaru  2007-11-01 15:32:46  No: 66716  IP: 192.*.*.*

>MultiByteToWideChar(CP_ACP, 0, shortcut, -1, szFileName, MAX_PATH);
>_piFile->Save(szFileName, TRUE);
↑のszFileNameをどうやって取得しているかが問題ではないでしょうか。

編集 削除
gak  2007-11-01 16:40:24  No: 66717  IP: 192.*.*.*

「All Users」でアイコンが作成?されない時の各関数の成否情報程度は出して欲しかった…

> 何が足りないのでしょうか?
「\All Users\スタート メニュー\プログラム」フォルダのアクセス権
っていうのを可能性の一つとして挙げておく

編集 削除
東京みやげ  2007-11-01 17:27:51  No: 66718  IP: 192.*.*.*

subaruさん  gakさん
ありがとうございました。

私もパーミッション疑ったんですが、
単純にRegQueryValueExのキーの名前を間違っていました。
subaruさんのヒントが効きました!

お恥ずかしい・・・

何かありましたらまたお願いしますorz

編集 削除
subaru  2007-11-01 17:44:06  No: 66719  IP: 192.*.*.*

解決してなによりですがスタートメニューのパスは
SHGetSpecialFolderLocationかSHGetSpecialFolderPathで
CSIDL_STARTUP/CSIDL_COMMON_STARTUPを指定して取得できるので
わざわざレジストリを見に行く必要はないように思えますが・・・

編集 削除