c ++ - Fjernelse af exe fra windows startmenu hurtigstart

Indlæg af Hanne Mølgaard Plasc

Problem



Til arbejde har vi to genvejstaster, der installeres i startmenuen, hvor de begge peger på den samme exe (men den anden med forskellige kommandolinjeparametre).


Nogle gange vil vinduerne vælge den anden genvej, der vises i startmenuen hot programliste, hvilket er dårlig, fordi det giver en fuld opdatering af applikationen.


Er der mulighed for at fortælle windows, at man ikke viser den genvej i startmenylisten?

Bedste reference


Ja, faktisk skrev Raymond Chen netop om dette: [16]



  Du kan indstille System.App­User­Model.Exclude­From­Show­In­New­Install -egenskaben til VARIANT\_TRUE for at fortælle Start-menuen: 'Jeg er ikke det primære indgangspunkt for programmet, jeg er en sekundær genvej, som en hjælpefil.' [17]]]



Prøvekode (CCoInitialize klasse): [18]


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

Andre referencer 1


Du finder dokumentationen for disse indstillinger her: Application User Model IDs (AppUserModelIDs). Specifikt søger du efter afsnittet med titlen 'Udelukkelseslister for opgaveregulering og seneste/hyppige lister' . Den gældende del genoptrykes nedenfor: [19]



  Applikationer, processer og vinduer kan vælge at gøre sig utilgængelige til at fastgøre til proceslinjen eller til optagelse i Start-menuens MFU-liste. Der er tre mekanismer til at opnå dette:

  
  

      
  1. Tilføj NoStartPage posten til ansøgningens registrering som vist her:


    HKEY\_CLASSES\_ROOTApplicationsExample.exeNoStartPage
    

      
      Dataene der er forbundet med indgangen NoStartPage ignoreres. Kun tilstedeværelsen af ​​posten er påkrævet. Derfor er den ideelle type for NoStartPage REG\_NONE.

      
      Bemærk, at enhver brug af en eksplicit AppUserModelID tilsidesætter indgangen NoStartPage. Hvis en eksplicit AppUserModelID anvendes på en genvej, proces eller et vindue, bliver det pinnable og kvalificeret til menuen Start menu MFU.

  2.   
  3. Indstil egenskaben System.AppUserModel.PreventPinning på vinduer og genveje. Denne egenskab skal indstilles på et vindue før egenskaben PKEY\_AppUserModel\_ID. [20] [21]

  4.   
  5. Tilføj en eksplicit AppUserModelID som en værdi under den følgende registerundernøgle som vist her:


    HKEY\_LOCAL\_MACHINESoftwareMicrosoftWindowsCurrentVersionExplorerFileAssociationNoStartPageAppUserModelIDsAppUserModelID
    

  6.   

  
  Hver indgang er en REG\_NULL værdi med navnet på AppUserModelID. Enhver AppUserModelID, der findes i denne liste, er ikke pinnable og kan ikke optages i MFU-listen Start menu.