Удаление exe из windows startmenu быстрый запуск - PullRequest
0 голосов
/ 17 февраля 2011

Для работы у нас есть два ярлыка, которые устанавливаются в меню «Пуск», причем оба они указывают на один и тот же exe (но второй с разными аргументами командной строки).

Иногда окна выбирают второй ярлык для отображения в списке горячих программ меню «Пуск», что плохо, так как вызывает полное обновление приложения.показать этот ярлык в списке меню «Пуск»?

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

Да, на самом деле Раймонд Чен только что написал об этом :

Вы можете установить свойство System.App­User­Model.Exclude­From­Show­In­New­Install в 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;
}
2 голосов
/ 17 февраля 2011

Документацию по этим настройкам вы найдете здесь: Идентификаторы модели пользователя приложения (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
    

Каждая запись имеет значение REG_NULL с именем AppUserModelID.Любой найденный в этом списке AppUserModelID не может быть закреплен и не может быть включен в список MFU меню «Пуск».

...