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

解決


東京みやげ  2007-11-01 19:20:41  No: 66715

毎々お世話になっております。
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-02 00:32:46  No: 66716

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


gak  2007-11-02 01:40:24  No: 66717

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

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


東京みやげ  2007-11-02 02:27:51  No: 66718

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

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

お恥ずかしい・・・

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


subaru  2007-11-02 02:44:06  No: 66719

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加