0

仕事のために、スタート メニューにインストールされる 2 つのショートカットがあり、どちらも同じ exe を指しています (ただし、2 つ目はコマンド ライン引数が異なります)。

場合によっては、ウィンドウが 2 番目のショートカットを選択してスタート メニューのホット プログラム リストに表示することがありますが、これはアプリケーションの完全な更新を引き起こすため、問題があります。

スタートメニューリストにそのショートカットを表示しないようにウィンドウに指示する方法はありますか?

4

2 に答える 2

4

はい、実際、レイモンド・チェンはこれについて書いたばかりです:

System.App­User­Model.Exclude­From­Show­In­New­Installプロパティを設定VARIANT_TRUEして、[スタート]メニューに「私はプログラムのプライマリエントリポイントではありません。ヘルプファイルのようなセカンダリショートカットです」と指示することができます。

サンプルコード(CCoInitializeクラス):

#include <windows.h>
#include <tchar.h>
#include <shlobj.h>
#include <atlbase.h>

// class 3CCoInitialize incorporated here by reference

int __cdecl _tmain(int argc, TCHAR **argv)
{
 // error checking elided for expository purposes
 CCoInitialize init;
 CComPtr<IShellLink> spsl;
 spsl.CoCreateInstance(CLSID_ShellLink);
 spsl->SetPath(TEXT("C:\\Program Files\\LitWare\\LWUpdate.exe"));
 PROPVARIANT pvar;
 pvar.vt = VT_BOOL;
 pvar.boolVal = VARIANT_TRUE;
 CComQIPtr<IPropertyStore>(spsl)->SetValue(PKEY_AppUserModel_ExcludeFromShowInNewInstall, pvar);
 CComQIPtr<IPersistFile>(spsl)->Save(L"LitWare Update.lnk", TRUE);
 return 0;
}
于 2011-02-17T05:20:41.410 に答える
2

これらの設定のドキュメントは、アプリケーションユーザーモデルID(AppUserModelIDs)にあります。具体的には、 「タスクバーの固定の除外リストと最近/頻繁なリスト」というタイトルのセクションを探しています。該当する部分を以下に転載します。

アプリケーション、プロセス、およびウィンドウは、タスクバーに固定するか、[スタート]メニューのMFUリストに含めることができないようにすることを選択できます。これを実現するための3つのメカニズムがあります。

  1. 次に示すように、アプリケーションの登録にエントリを追加しNoStartPageます。

    HKEY_CLASSES_ROOT\Applications\Example.exe\NoStartPage
    

    エントリに関連付けられているデータNoStartPageは無視されます。エントリの存在のみが必要です。したがって、の理想的なタイプはNoStartPageですREG_NONE

    明示的なAppUserModelIDを使用すると、NoStartPageエントリが上書きされることに注意してください。明示的なAppUserModelIDがショートカット、プロセス、またはウィンドウに適用されると、ピン留め可能になり、[スタート]メニューのMFUリストの対象になります。

  2. System.AppUserModel.PreventPinningウィンドウとショートカットにプロパティを設定します。このプロパティは、プロパティの前のウィンドウで設定する必要がありPKEY_AppUserModel_IDます。

  3. 次に示すように、次のレジストリサブキーの下に値として明示AppUserModelIDを追加します。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\FileAssociation\NoStartPageAppUserModelIDs\AppUserModelID
    

各エントリはREG_NULL、AppUserModelIDという名前の値です。このリストにあるAppUserModelIDは固定できず、[スタート]メニューの[MFU]リストに含める資格がありません。

于 2011-02-17T05:15:08.277 に答える