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:
- Introduktion till standardprogram och dess relaterade API-uppsättning
- registrera ett program för användning med standardprogram
- blir standardwebbläsaren
- standardprogramgränssnittet
- metodtips för att använda standardprogram
- ytterligare resurser
- Relaterade ämnen
Introduktion till standardprogram och dess relaterade API-uppsättning
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:
- ProgIDs
- registreringsundernyckel och värdebeskrivningar
- RegisteredApplications
- fullständigt registreringsexempel
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.
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.
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.
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.
- Installera nödvändiga binära filer.
- Skriv ProgID:er till HKEY_LOCAL_MACHINE. Observera att program måste skapa programspecifika ProgID:er för sina associationer.
- 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.
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.
Ytterligare resurser
Relaterade ämnen