【问题标题】:Removing exe from windows startmenu quick launch从 Windows 开始菜单快速启动中删除 exe
【发布时间】:2011-02-17 04:39:29
【问题描述】:

为了工作,我们有两个安装到开始菜单的快捷方式,它们都指向同一个 exe(但第二个具有不同的命令行参数)。

有时windows会选择第二个快捷方式显示在开始菜单热程序列表中,这很糟糕,因为它会导致应用程序的完全更新。

有没有办法告诉窗口不要在开始菜单列表中显示该快捷方式?

【问题讨论】:

    标签: c++ windows winapi startmenu


    【解决方案1】:

    是的,其实是Raymond Chenjust wrote about this

    您可以将System.App­User­Model.Exclude­From­Show­In­New­Install property 设置为VARIANT_TRUE 以告诉开始菜单,“我不是程序的主要入口点;我是辅助快捷方式,就像帮助文件一样。”

    示例代码 (CCoInitialize class):

    #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;
    }
    

    【讨论】:

    • 这仅适用于 exe 突出显示以及如何使用两个指向同一个 exe 的快捷方式?
    • @Lodle:该属性仅适用于快捷方式,不适用于exe
    • @Lodle:不,不在用户开始菜单的快捷方式上
    • 谢谢,得到它的工作,但我不得不删除旧的快捷方式,并使用 com api 创建一个全新的快捷方式。真是蛋疼。也不能将我的反对票改为赞成票:(
    【解决方案2】:

    您可以在此处找到这些设置的文档:Application User Model IDs (AppUserModelIDs)。具体来说,您正在寻找标题为“任务栏固定和最近/频繁列表的排除列表”的部分。适用部分转载如下:

    应用程序、进程和窗口可以选择使自己无法固定到任务栏或包含在“开始”菜单的 MFU 列表中。有三种机制可以做到这一点:

    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
      

    每个条目都是一个带有 AppUserModelID 名称的 REG_NULL 值。在此列表中找到的任何 AppUserModelID 均不可固定,也不符合包含在“开始”菜单 MFU 列表中的条件。

    【讨论】:

    • 但是快捷方式使用相同的exe。希望第一个快捷方式可以固定,而不是第二个。
    • 第二点(System.AppUserModel.PreventPinning property)也谈到了 schortcuts。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多