Dela via


Standardprogram

Använd standardprogram för att ange standardanvändarupplevelsen. Användare kan komma åt standardprogram från Kontrollpanelen eller direkt från Start--menyn. Set Program Access and Computer Defaults (SPAD) tool, den primära standardupplevelsen för användare i Windows XP, är nu en del av standardprogram.

Viktig

Det här avsnittet gäller inte för Windows 10. Sättet som standardfilassociationer fungerar på ändrades i Windows 10. Mer information finns i avsnittet om Ändringar i hur Windows 10 hanterar standardappar i det här inlägget.

 

När en användare anger program som standard med standardprogramgäller standardinställningen endast för den användaren och inte för andra användare som kan använda samma dator. standardprogram innehåller en uppsättning API:er (inaktuella i Windows 8) som gör det möjligt för oberoende programvaruleverantörer (ISV:er) att inkludera sina program eller program i standardsystemet. API-uppsättningen hjälper också ISV:er att bättre hantera sin status som standard.

Det här avsnittet är ordnat på följande sätt:

standardprogram är främst utformade för program som använder standardfiltyper som .mp3 eller .jpg filer eller standardprotokoll, till exempel HTTP eller mailto. Program som använder sina egna patentskyddade protokoll och filassociationer använder vanligtvis inte standardprogram funktioner.

När du har registrerat ett program för standardprogram funktioner är följande alternativ och funktioner tillgängliga med hjälp av API-uppsättningen:

  • Återställ alla registrerade standardvärden för ett program. Inaktuell för Windows 8.
  • Återställ en enda registrerad standard för ett program. Inaktuell för Windows 8.
  • Fråga efter ägaren av ett specifikt standardvärde i ett enda anrop i stället för att söka i registret. Du kan fråga efter standardvärdet för en filassociation, ett protokoll eller Start-menyns kanoniska verb.
  • Starta ett användargränssnitt för ett specifikt program där en användare kan ange enskilda standardvärden.
  • Ta bort alla associationer per användare.

Standardprogram tillhandahåller också ett användargränssnitt som gör att du kan registrera ett program för att ge användaren ytterligare information. Ett digitalt signerat program kan till exempel innehålla en URL till tillverkarens startsida.

Användning av den associerade API-uppsättningen kan hjälpa en programfunktion att fungera korrekt under UAC-funktionen (user account control) som introducerades i Windows Vista. Under UAC visas en administratör för systemet som en standardanvändare, så att administratören vanligtvis inte kan skriva till HKEY_LOCAL_MACHINE underträd. Den här begränsningen är en säkerhetsfunktion som förhindrar att en process fungerar som administratör utan administratörens vetskap.

Installationen av ett program av en användare utförs vanligtvis som en upphöjd process. Ett försök av ett program att ändra standardassociationens beteenden på datornivå efter installationen misslyckas dock. I stället måste standardvärden registreras på användarnivå, vilket förhindrar att flera användare skriver över varandras standardvärden.

Den hierarkiska registerstrukturen för fil- och protokollassociationer ger prioritet till standardvärden per användare jämfört med standardvärden på datornivå. Vissa program innehåller punkter i koden som tillfälligt höjer deras rättigheter när de gör anspråk på standardvärden som registrerats i HKEY_LOCAL_MACHINE. Dessa program kan få oväntade resultat om ett annat program redan har registrerats som standard per användare. Användning av standardprogram förhindrar den här tvetydigheten och garanterar förväntade resultat per användare.

Registrera ett program för användning med standardprogram

I det här avsnittet visas de registerundernycklar och värden som behövs för att registrera ett program med standardprogram. Den innehåller ett fullständigt exempel.

Det här avsnittet innehåller följande avsnitt:

standardprogram kräver att varje program uttryckligen registrerar de filassociationer, MIME-associationer och protokoll som programmet ska anges som en möjlig standard för. Du registrerar associationerna med hjälp av följande registerelement, som beskrivs i detalj senare i det här avsnittet under Registreringsundernyckel och Värdebeskrivningar:

HKEY_LOCAL_MACHINE
   %ApplicationCapabilityPath%
      ApplicationDescription
      ApplicationName
      Hidden
      FileAssociations
         .file-extension1
         .file-extension2
         ...
         .file-extensionX
      MIMEAssociations
         MIME
      Startmenu
         StartmenuInternet
         Mail
      UrlAssociations
         url-scheme
   SOFTWARE
      RegisteredApplications
         Unique Application Name = %ApplicationCapabilityPath%

I följande exempel visas registerposterna för en fiktiv Contoso-webbläsare som kallas WebBrowser:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Contoso
         WebBrowser
            Capabilities
               ApplicationDescription = This award-winning Contoso browser is better than ever. Search the Internet and find exactly what you want in just seconds. Use integrated tabs and new phishing detectors to enhance your Internet experience.
               FileAssociations
                  .htm = ContosoHTML
                  .html = ContosoHTML
                  .shtml = ContosoHTML
                  .xht = ContosoHTML
                  .xhtml = ContosoHTML
               Startmenu
                  StartmenuInternet = Contoso.exe
               UrlAssociations
                  http = Contoso.Url.Http
                  https = Contoso.Url.Https
                  ftp = Contoso.Url.ftp
   SOFTWARE
      RegisteredApplications
         Contoso.WebBrowser.1.06 = SOFTWARE\Contoso\WebBrowser\Capabilities

ProgID:erna

Ett program måste ange en specifik ProgID-. Se till att inkludera all information som vanligtvis skrivs till den allmänna standardundernyckeln för tillägget. Till exempel tillhandahåller den fiktiva Litware-mediespelaren den programspecifika HKEY_LOCAL_MACHINE\SOFTWARE\-klasser\LitwarePlayer11.AssocFile.MP3 undernyckel. Undernyckeln innehåller all information i den allmänna standardundernyckeln HKEY_LOCAL_MACHINE\SOFTWARE\klasser\.mp3 plus eventuell ytterligare information som du vill att programmet ska registrera. Detta säkerställer att om användaren återställer den .mp3 associationen till Litware-spelaren är Litware-spelarens information intakt och har inte skrivits över av ett annat program. (Överskrivning kan inträffa om standardundernyckeln är den enda källan till den informationen.)

När du mappar ett ProgID till ett filnamnstillägg eller protokoll kan ett program mappa en-till-en eller en-till-många. I Contoso-exemplet pekar ContosoHTML på ett enda ProgID som tillhandahåller shellexecute-information för tilläggen .htm, .html, .shtml, .xht och .xhtml. Eftersom det finns olika ProgID för varje protokoll gör du det möjligt för varje protokoll att ha en egen körningssträng när du använder protokoll.

När din MIME-typ kan visas infogat i en webbläsare måste ProgID för MIME-typen innehålla CLSID- undernyckel som använder klassidentifieraren (CLSID) för motsvarande program. Detta CLSID används i en sökning mot CLSID i MIME-databasen som lagras i HKEY_LOCAL_MACHINE\SOFTWARE\-klasser\MIME\Database\Content Type. Om MIME-typen inte är avsedd att visas infogad i en webbläsare kan det här steget utelämnas.

Registreringsundernyckel och värdebeskrivningar

I det här avsnittet beskrivs de enskilda registerundernycklarna och värdena som används för att registrera ett program med standardprogram, vilket illustreras tidigare.

Kapacitet

Undernyckeln funktioner innehåller all standardprogram information för ett visst program. Platshållaren %ApplicationCapabilityPath% refererar till registersökvägen från antingen HKEY_CURRENT_USER eller HKEY_LOCAL_MACHINE till programmets -funktioner undernyckel. Den här undernyckeln innehåller de signifikanta värden som visas i följande tabell.

Värde Typ Betydelse
ApplicationDescription REG_SZ eller REG_EXPAND_SZ Krävs. För att göra det möjligt för en användare att göra ett välgrundat val av standardtilldelning måste ett program ange en sträng som beskriver programmets funktioner. Även om det tidigare Contoso-exemplet tilldelar beskrivningen direkt till ApplicationDescription-värdet, tillhandahåller program vanligtvis beskrivningen som en resurs som är inbäddad i en .dll fil för att underlätta lokaliseringen. Om ApplicationDescription inte tillhandahålls visas programmet inte i användargränssnittslistor med potentiella standardprogram.
ApplicationName REG_SZ eller REG_EXPAND_SZ Valfri. Namnet som programmet visas med i användargränssnittet för standardprogram. Om dessa data inte tillhandahålls av programmet används namnet på det körbara program som är associerat med det första registrerade ProgID för programmet i användargränssnittet. ApplicationName måste alltid matcha namnet som är registrerat under RegisteredApplications. Du kan använda ApplicationName om du vill att olika programtyper, till exempel en webbläsare och en e-postklient, ska peka på samma körbara fil medan de visas som olika namn.
Dold REG_DWORD Valfri. Ange det här värdet till 1 för att utelämna programmet från listan över program i dialogrutan Ange standardprogram. Om det här värdet är 0 eller inte visas programmet normalt i listan.

 

FileAssociations

Undernyckeln FileAssociations innehåller specifika filassociationer som programmet begär. Dessa anspråk lagras som värden med ett värde för varje tillägg. Associationer pekar på ett programspecifikt ProgID i stället för ett generiskt ProgID. Alla associationer behöver dock inte peka på samma ProgID.

MIMEAssociations

MIMEAssociations undernyckel innehåller specifika MIME-typer som programmet begär. Dessa anspråk lagras som värden, med ett värde för varje MIME-typ. Värdenamnet för varje MIME-typ måste exakt matcha MIME-namnet som lagras i MIME-databasen. Värdet måste också tilldelas ett programspecifikt ProgID som innehåller motsvarande CLSID för programmet.

Startmeny

Undernyckeln Startmenu är associerad med den användartilldelningsbara Internet- och e-post poster i menyn Start. Ett program måste registreras separat som en utmanare för dessa poster. Mer information finns i Registrera program med klienttyper.

Not

Från och med Windows 7 finns det inte längre Internet- och e-post poster i menyn Starta. Registerdata som är associerade med posten e-post används fortfarande för mapi-standardklienten, men registerdata som är associerade med posten Internet används inte alls av Windows.

 

Genom att associera Start-menyregistrering av ett program med dess standardprogram registrering visas programmet som en potentiell standard i Ange associationer användargränssnittet. Om användaren har valt programmet som standard och sedan väljer att återställa alla programstandarder senare återställs programmet till sin Start-menyposition för den användaren. Mer information och en bild finns i avsnittet standardprogramgränssnittet senare i det här avsnittet.

Undernyckeln Startmenu har två poster: StartMenuInternet och Mail, som motsvarar den kanoniska Internet- och e-post positioner i menyn Start. Ett program tilldelar antingen StartMenuInternet eller Mail ett värde som är lika med namnet på programmets registrerade undernyckel under HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet eller HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail (som beskrivs i Registrera program med klienttyper).

När det gäller e-post kanonisk position på menyn Start representerar den standard-MAPI-klienten och antas därför kunna ge MAPI-anrop. Under Windows 7, även om det inte längre finns någon e-post kanonisk position på menyn Starta, fortsätter den här undernyckeln att användas för mapi-standardklienten. Ett program som gör anspråk på e-poststandarden bör registreras som en MAPI-hanterare under följande undernyckel:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName

Om en e-postklient inte kan stödja MAPI men ändå vill kämpa för Start-menyn e-post kanonisk position, kan den registrera en kommandorad under följande undernyckel:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName
               shell
                  open
                     command

Under HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\CanonicalName lägga till ett standardvärde med programnamnet.

Med de här posterna kan programmet startas från Start-menyns position för e-post. Observera att MAPI-anrop fortfarande görs till programmet och antingen faller igenom till den tidigare MAPI-hanteraren eller misslyckas om ingen MAPI-hanterare har angetts. Mer information finns i Registrera program med klienttyper.

UrlAssociations

UrlAssociations undernyckel innehåller de specifika URL-protokoll som programmet begär. Dessa anspråk lagras som värden med ett värde för varje protokoll. Varje protokoll måste peka på ett programspecifikt ProgID i stället för till ett allmänt ProgID. Som vi nämnde i Contoso-exemplet kan du använda ett annat ProgID för varje protokoll för att var och en ska ha en egen körningssträng.

RegisteredApplications

Den fullständiga undernyckeln för RegisteredApplications är:

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications

Den här undernyckeln tillhandahåller operativsystemet med registerplatsen för standardprogram information för programmet. Platsen lagras som ett värde vars namn måste matcha namnet på programmet.

Fullständigt registreringsexempel

Det här exemplet visar de undernycklar och värden som används för att registrera den fiktiva Litware-mediespelaren. Exemplet innehåller ProgID-posterna för att visa hur allt passar ihop.

Följande undernyckel visar det programspecifika ProgID för .mp3 MIME-typ:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.MIME.MP3
            CLSID
               (Default) = {CD3AFA76-B84F-48F0-9393-7EDC34128127}

Nästa är det programspecifika ProgID som associerar Litware-programmet med filnamnstillägget .mp3.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.AssocFile.MP3
            (Default) = MP3 Format Sound
            DefaultIcon
               (Default) = %ProgramFiles%\Litware\litware.dll, 0
            shell
               open
                  command
                     (Default) = %ProgramFiles%\Litware\litware.exe

Nästa poster visar det kombinerade ProgID för både .mpeg MIME-typ och filnamnstillägg.

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         LitwarePlayer11.AssocFile.MPG
            (Default) = Movie Clip
            CLSID
               (Default) = {D92B76F4-CFA0-4b93-866B-7730FEB4CD7B}
            DefaultIcon
               (Default) = %ProgramFiles%\Litware\litware.dll, 0
            shell
               open
                  command
                     (Default) = %ProgramFiles%\Litware\litware.exe

Nästa poster registrerar Litware-programmet i standardprogram och använder tidigare registrerade ProgID:erna

HKEY_LOCAL_MACHINE
   SOFTWARE
      Litware
         LitwarePlayer
            Capabilities
               ApplicationDescription = The new Litware Media Player breaks new ground in exciting fictional programs.
               FileAssociations
                  .mp3 = LitwarePlayer11.AssocFile.MP3
                  .mpeg = LitwarePlayer11.AssocFile.MPG
               MimeAssociations
                  audio/mp3 = LitwarePlayer11.MIME.MP3
                  audio/mpeg = LitwarePlayer11.AssocFile.MPG

Slutligen registrerar det här exemplet platsen för litware-standardprogram registrering.

HKEY_LOCAL_MACHINE
   SOFTWARE
      RegisteredApplications
         Litware Player = Software\Litware\LitwarePlayer\Capabilities

Bli standardwebbläsare

Webbläsarregistrering måste följa de metodtips som beskrivs i det här avsnittet. När webbläsaren är installerad kan Windows presentera ett systemmeddelande för användaren genom vilket användaren kan välja webbläsaren som systemstandard. Det här meddelandet visas när dessa villkor uppfylls:

  • Webbläsarens installationsprogram anropar SHChangeNotify med flaggan SHCNE_ASSOCCHANGED för att meddela Windows att nya protokollhanterare har registrerats.
  • Windows upptäcker att ett eller flera nya program har registrerats för att hantera både http:// och https:// protokoll, och användaren har ännu inte meddelats. Med andra ord har inget av följande visats för användaren: ett systemmeddelande som annonserar programmet, en OpenWith-utfälld utfällning som innehåller programmet eller sidan Ange standardinställningar för användare (SUD) för programmet.

I följande exempel visas den rekommenderade registreringskoden som webbläsarens installationsprogram ska köra efter att dess registernycklar har skrivits.

SHChangeNotify meddelar först systemet att nya associationsalternativ är tillgängliga. Anropet SHChangeNotify krävs för att säkerställa att systemets standardvärden fungerar korrekt.

En viloläge-instruktionen ger sedan tid för systemprocesser att hantera meddelandet.

void NotifySystemOfNewRegistration()
{
    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_DWORD | SHCNF_FLUSH, nullptr, nullptr);
    Sleep(1000);
}

Om användaren stänger eller ignorerar det resulterande meddelandet eller den utfällbara menyn utan att göra ett nytt standardval i webbläsaren förblir standardwebbläsaren oförändrad. Observera att användaren också kan ändra standardwebbläsaren när som helst via andra mekanismer, inklusive Ange standardinställningar för användare i Kontrollpanelen.

Standardprogram användargränssnitt

Bilderna i det här avsnittet visar användargränssnittet för standardprogram som användaren ser.

Följande bild visar huvudfönstret standardprogram i Kontrollpanelen.

skärmbild av standardprogrammets startsida

När en användare väljer alternativet Ange standardprogram visas följande fönster. Användare kan använda den här sidan för att tilldela ett standardprogram för alla filtyper och protokoll som programmet är en möjlig standard för. Som du ser i följande bild visas alla registrerade program och programikonen i rutan Program till vänster.

skärmbild av sidan med standardprogram

När användaren väljer ett program i listan visas programikonen och providern. Om URL:en är inbäddad i programmets digitalt signerade certifikat kan programmet också visa en URL. Program som inte är digitalt signerade kan inte visa en URL.

Beskrivande text, som tillhandahålls av programmet under registreringen, visas också. Den här texten krävs. Under beskrivningsrutan finns en indikation på hur många standardvärden programmet för närvarande tilldelas av det fullständiga antalet som det är registrerat för att hantera.

Om du vill tilldela eller återställa ett program som standard för alla filer och protokoll som det är registrerat för klickar användaren på Ange det här programmet som standardalternativet.

Om du vill tilldela enskilda filtyper och protokoll till ett program klickar användaren på alternativet Välj standardvärden för det här programmet, som visar ett Ange associationer för ett program fönster som det i följande bild.

Not

Vi rekommenderar att du anropar Ange associationer för ett program med hjälp av IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI.

 

skärmbild av de angivna assocationerna för en programsida

Metodtips för att använda standardprogram

Det här avsnittet innehåller riktlinjer för bästa praxis för att använda standardprogram när du registrerar program. Den innehåller också designförslag för att skapa ett program som ger användarna optimala standardprogram funktioner.

Under installationen

Förutom de installationsprocedurer som normalt används under Windows XP måste ett Windows Vista- eller senare baserat program registrera sig med standardprogram funktionen för att dra nytta av dess funktioner.

Utför följande stegsekvens under installationen. Steg 1–3 matchar de steg som användes i Windows XP. steg 4 var nytt i Windows Vista.

  1. Installera nödvändiga binära filer.
  2. Skriv ProgID:er till HKEY_LOCAL_MACHINE. Observera att program måste skapa programspecifika ProgID:er för sina associationer.
  3. Registrera programmet med standardprogram som tidigare beskrivits i Registrera ett program för användning med standardprogram.

Efter installationen

I det här avsnittet beskrivs hur programprompten först ska presentera sina standardalternativ för varje användare. Den beskriver också hur ett program kan övervaka sin status som standard för sina möjliga associationer och protokoll.

First Run-upplevelser

När programmet körs av en användare för första gången rekommenderar vi att programmet visar användargränssnittet för användaren som vanligtvis innehåller följande två alternativ:

  • Acceptera standardinställningarna för programmet. Det här alternativet är markerat som standard.
  • Anpassa standardinställningarna för program.

Om användaren godkänner standardinställningarna före Windows 8 anropar programmet IApplicationAssociationRegistration::SetAppAsDefaultAll, som konverterar alla associationer på datornivå som deklareras under installationen till inställningar per användare för användaren.

Om användaren bestämmer sig för att anpassa inställningarna anropar programmet IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI för att visa filassociationsgränssnittet. Följande bild visar det här fönstret för den fiktiva Litware-mediespelaren.

skärmbild av uppsättningsassociationer för en programsida för litware

Fönstret filassociation visar de standardvärden som programmet registrerade och visar även den aktuella standardinställningen för andra tillägg och protokoll. När användaren har anpassat standardinställningarna klickar de på knappen Spara för att genomföra ändringarna. Om användaren klickar på Avbrytstängs fönstret utan att ändringarna sparas.

Du bör använda det här användargränssnittet för dina program i stället för att skapa egna. På så sätt sparar du de resurser som tidigare krävdes för att utveckla filassociationens användargränssnitt. Du garanterar också att associationer sparas korrekt.

Ange ett program för att kontrollera om det är standard

Not

Detta stöds inte längre från och med Windows 8.

 

Program kontrollerar vanligtvis om de anges som standard när de körs. Ange att dina program ska göra den här kontrollen genom att anropa IApplicationAssociationRegistration::QueryAppIsDefault eller IApplicationAssociationRegistration::QueryAppIsDefaultAll.

Om programmet fastställer att det inte är standard kan det visa användargränssnitt som frågar användaren om de vill acceptera den aktuella situationen eller att göra programmet till standard. Inkludera alltid en kryssruta i det här användargränssnittet som är markerad som standard och som visar alternativet att inte bli tillfrågad igen.

Not

Valet av standard ska vara användarstyrt. Ett program bör aldrig återta ett standardvärde utan att fråga användaren.

 

Följande bild visar en exempeldialogruta.

skärmbild av en exempeldialogruta

Ytterligare resurser

metodtips för filassociationer

exempelscenario för filassociation

riktlinjer för att hantera standardprogram i Windows Vista och senare

Ange programåtkomst och standardvärden för datorer (SPAD)