Dela via


Programregistrering

I det här avsnittet beskrivs hur program kan exponera information om sig själva som behövs för att aktivera vissa scenarier. Detta inkluderar information som behövs för att hitta programmet, de verb som programmet stöder och de typer av filer som ett program kan hantera.

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

Not

Program kan också registreras i kontrollpanelen Set Program Access and Computer Defaults (SPAD) och Set Your Default Programs (SYDP). Information om SPAD- och SYDP-programregistrering finns i Riktlinjer för filassociationer och standardprogramoch Ange programåtkomst och standardvärden för datorer (SPAD).

Hitta ett körbart program

När funktionen ShellExecuteEx anropas med namnet på en körbar fil i parametern lpFile finns det flera platser där funktionen letar efter filen. Vi rekommenderar att du registrerar ditt program i appsökvägar registerundernyckel. På så sätt undviker du behovet av att program ändrar systemvariabeln PATH-miljö.

Filen söks på följande platser:

  • Den aktuella arbetskatalogen.
  • Endast katalogen Windows (inga underkataloger söks).
  • Katalogen Windows\System32.
  • Kataloger som anges i PATH-miljövariabeln.
  • Rekommenderas: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Registrera program

Både App Paths och Applications registerundernycklar används för att registrera och kontrollera systemets beteende för program. Den appsökvägarna undernyckel är den önskade platsen.

Använda undernyckeln Appsökvägar

I Windows 7 och senare rekommenderar vi starkt att du installerar program per användare i stället för per dator. Ett program som installeras för per användare kan registreras under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths. Ett program som är installerat för alla användare av datorn kan registreras under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

Posterna som finns under appsökvägar används främst i följande syften:

  • Mappa ett programs körbara filnamn till filens fullständigt kvalificerade sökväg.
  • Om du vill ha information i förväg till PATH-miljövariabeln per program och per process.

Om namnet på en undernyckel för appsökvägar matchar filnamnet utför Shell två åtgärder:

  • Posten (standard) används som filens fullständigt kvalificerade sökväg.
  • Sökvägsposten för den undernyckeln läggs i förväg till path-miljövariabeln för den processen. Om detta inte krävs kan värdet Sökväg utelämnas.

Potentiella problem att vara medveten om är:

  • Shell begränsar längden på en kommandorad till MAX_PATH * 2 tecken. Om det finns många filer som anges som registerposter eller deras sökvägar är långa kan filnamn senare i listan gå förlorade när kommandoraden trunkeras.
  • Vissa program accepterar inte flera filnamn på en kommandorad.
  • Vissa program som accepterar flera filnamn känner inte igen formatet som shell tillhandahåller dem i. Shell tillhandahåller parameterlistan som en citerad sträng, men vissa program kan kräva strängar utan citattecken.
  • Alla objekt som kan dras är inte en del av filsystemet. till exempel skrivare. Dessa objekt har ingen standardsökväg för Win32, så det finns inget sätt att tillhandahålla ett meningsfullt lpParameters värde för att ShellExecuteEx.

Om du använder Posten DropTarget undviker du dessa potentiella problem genom att ge åtkomst till alla Urklippsformat, inklusive CFSTR_SHELLIDLIST (för långa fillistor) och CFSTR_FILECONTENTS (för objekt som inte är filsystem).

Registrera och kontrollera beteendet för dina program med undernyckeln AppSökvägar:

  1. Lägg till en undernyckel med samma namn som den körbara filen i appsökvägar undernyckel, enligt följande registerpost.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Mer information om appsökvägar undernyckelposter finns i följande tabell.

Registerpost Detaljer
(Standard) Är den fullständigt kvalificerade sökvägen till programmet. Programnamnet som anges i posten (standard) kan anges med eller utan dess .exe tillägg. Om det behövs lägger funktionen ShellExecuteEx till tillägget vid sökning appsökvägar undernyckel. Posten är av REG_SZ typ.
DontUseDesktopChangeRouter Är obligatoriskt för felsökningsprogram för att undvika dödlägen i fildialogrutor vid felsökning av Utforskaren. Att ange posten DontUseDesktopChangeRouter ger dock en något mindre effektiv hantering av ändringsmeddelandena. Posten är av REG_DWORD typ och värdet är 0x1.
DropTarget Är en klassidentifierare (CLSID). Posten DropTarget innehåller CLSID för ett objekt (vanligtvis en lokal server i stället för en processerver) som implementerar IDropTarget-. När släppmålet är en körbar fil och inget DropTarget-värde anges konverterar Shell som standard listan över borttagna filer till en kommandoradsparameter och skickar den till ShellExecuteEx via lpParameters.
Stig Tillhandahåller en sträng (i form av en semikolonavgränsad lista över kataloger) för att lägga till i PATH-miljövariabeln när ett program startas genom att anropa ShellExecuteEx. Det är den fullständigt kvalificerade sökvägen till .exe. Det är av REG_SZ. I Windows 7 och senarekan typen vara REG_EXPAND_SZoch ofta REG_EXPAND_SZ %ProgramFiles%. Obs! Förutom posterna (standard), Sökväg och DropTarget som identifieras av gränssnittet kan ett program också lägga till anpassade värden i den körbara filens appsökvägar undernyckel. Vi uppmuntrar programutvecklare att använda appsökvägar undernyckel för att tillhandahålla en programspecifik sökväg i stället för att lägga till den globala systemsökvägen.
SupportedProtocols Skapar en sträng som innehåller URL-protokollscheman för en viss nyckel. Detta kan innehålla flera registervärden som anger vilka scheman som stöds. Den här strängen följer formatet för scheme1:scheme2. Om listan inte är tom fil: läggs till i strängen. Det här protokollet stöds implicit när SupportedProtocols definieras.
UseUrl Anger att programmet kan acceptera en URL (i stället för ett filnamn) på kommandoraden. Program som kan öppna dokument direkt från Internet, till exempel webbläsare och mediespelare, bör ange den här posten.
När funktionen ShellExecuteEx startar ett program och värdet UseUrl=1 inte har angetts ShellExecuteEx hämtar dokumentet till en lokal fil och anropar hanteraren på den lokala kopian.
Om programmet till exempel har den här postuppsättningen och en användare högerklickar på en fil som lagras på en webbserver, blir öppna verbet tillgängligt. Annars måste användaren ladda ned filen och öppna den lokala kopian.
Posten UseUrl är av REG_DWORD typ och värdet är 0x1.
I Windows Vista och tidigare angav den här posten att URL:en skulle skickas till programmet tillsammans med ett lokalt filnamn när den anropades via ShellExecuteEx. I Windows 7 anger det att programmet kan förstå alla http- eller https-URL:er som skickas till det, utan att behöva ange namnet på cachefilen också. Den här registernyckeln är associerad med SupportedProtocols nyckel.

Använda programundernyckeln

Genom att inkludera registerposter under undernyckeln HKEY_CLASSES_ROOT\Applications\ApplicationName.exe kan program tillhandahålla den programspecifika information som visas i följande tabell.

Registerpost Beskrivning
shell\verb Tillhandahåller verbmetoden för att anropa programmet från OpenWith. Utan en verbdefinition som anges här förutsätter systemet att programmet stöder CreateProcessoch skickar filnamnet på kommandoraden. Den här funktionen gäller för alla verbmetoder, inklusive DropTarget, ExecuteCommand och Dynamic Data Exchange (DDE).
DefaultIcon Gör att ett program kan ange en specifik ikon för att representera programmet i stället för den första ikonen som lagras i .exe-filen.
FriendlyAppName Ger ett sätt att få ett localizable-namn att visa för ett program i stället för att bara versionsinformationen visas, som kanske inte kan lokaliseras. Associationsfrågan ASSOCSTR- läser det här registerpostvärdet och återgår till att använda FileDescription-namnet i versionsinformationen. Om det namnet saknas används filens visningsnamn som standard för associationsfrågan. Program bör använda ASSOCSTR_FRIENDLYAPPNAME för att hämta den här informationen för att få rätt beteende.
SupportedTypes Visar en lista över de filtyper som programmet stöder. På så sätt kan programmet visas i kaskadmenyn i dialogrutan Öppna med.
NoOpenWith Anger att inget program har angetts för att öppna den här filtypen. Tänk på att om en OpenWithProgIDs-undernyckel har angetts för ett program efter filtyp, och själva ProgID-undernyckeln inte också har en NoOpenWith-post, visas programmet i listan över rekommenderade eller tillgängliga program även om den har angett posten NoOpenWith. Mer information finns i How to How to Include an Application in the Open With Dialog Box and How to exclude an Application from the Open with Dialog Box.
IsHostApp Anger att processen är en värdprocess, till exempel Rundll32.exe eller Dllhost.exe, och bör inte övervägas för Start-meny som fästs eller tas med i MFU-listan (Mest använda). När den startas med en genväg som innehåller en argumentlista som inte är null eller en explicit App User Model ID (AppUserModelIDs)kan processen fästas (som genväg). Sådana genvägar är kandidater för inkludering i MFU-listan.
NoStartPage Anger att programmets körbara filer och genvägar ska undantas från menyn Start och från att fästas eller inkluderas i MFU-listan. Den här posten används vanligtvis för att exkludera systemverktyg, installationsprogram och avinstallationer samt readme-filer.
UseExecutableForTaskbarGroupIcon Gör att aktivitetsfältet använder standardikonen för den här körbara filen om det inte finns någon fästbar genväg för det här programmet, och i stället för ikonen för fönstret som först påträffades.
TaskbarGroupIcon Anger ikonen som används för att åsidosätta aktivitetsfältets ikon. Fönsterikonen används normalt för aktivitetsfältet. Om du anger posten TaskbarGroupIcon används ikonen från .exe för programmet i stället.

Exempel

Några exempel på programregistreringar via HKEY_CLASSES_ROOT\Program\ApplicationName.exe undernyckel är följande. Alla registerpostvärden är av REG_SZ typ, med undantag för DefaultIcon som är av REG_EXPAND_SZ typ.

HKEY_CLASSES_ROOT
   Applications
      wordpad.exe
         FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         SupportedTypes
            .3gp2
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         DefaultIcon
            (Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
   Applications
      WScript.exe
         NoOpenWith
HKEY_CLASSES_ROOT
   Applications
      photoviewer.dll
         shell
            open
               DropTarget
                  Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
   Applications
      mspaint.exe
         SupportedTypes
            .bmp
            .dib
            .rle
            .jpg
            .jpeg
            .jpe
            .jfif
            .gif
            .emf
            .wmf
            .tif
            .tiff
            .png
            .ico

Registrera verb och annan filassociationsinformation

Undernycklar som registrerats under HKEY_CLASSES_ROOT\SystemFileAssociations göra det möjligt för Shell att definiera standardbeteendet för attribut för filtyper och aktivera delade filassociationer. När användare ändrar standardprogrammet för en filtyp har ProgID för det nya standardprogrammet prioritet när det gäller att tillhandahålla verb och annan associationsinformation. Den här prioriteten beror på att det är den första posten i associationsmatrisen. Om standardprogrammet ändras är informationen under föregående ProgID inte längre tillgänglig.

Om du vill hantera konsekvenserna av en ändring av standardprogram proaktivt kan du använda HKEY_CLASSES_ROOT\SystemFileAssociations för att registrera verb och annan associationsinformation. På grund av deras plats efter ProgID i associationsmatrisen är dessa registreringar lägre prioritet. Dessa SystemFileAssociations-register är stabila även när användarna ändrar standardprogrammen och tillhandahåller en plats för att registrera sekundära verb som alltid är tillgängliga för en viss filtyp. Ett registerexempel finns i Registrera en upplevd typ senare i det här avsnittet.

Följande registerexempel visar vad som händer när användaren kör standardprogram objekt i Kontrollpanelen för att ändra standardvärdet för .mp3 filer till App2ProgID. När du har ändrat standardvärdet är Verb1 inte längre tillgängligt och Verb2 blir standard.

HKEY_CLASSES_ROOT
   .mp3
      (Default) = App1ProgID
HKEY_CLASSES_ROOT
   App1ProgID
      shell
         Verb1
HKEY_CLASSES_ROOT
   App2ProgID
      shell
         Verb2

Registrera en upplevd typ

Registervärden för upplevda typer definieras som undernycklar för HKEY_CLASSES_ROOT\SystemFileAssociations registerundernyckel. Den upplevda typen text registreras till exempel på följande sätt:

HKEY_CLASSES_ROOT
   SystemFileAssociations
      text
         shell
            edit
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
            open
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"

En filtyps upplevda typ anges genom att inkludera ett PerceivedType-värde i filtypens undernyckel. Värdet PerceivedType anges till namnet på den upplevda typen som registrerats under HKEY_CLASSES_ROOT\SystemFileAssociations registerundernyckel, som du ser i föregående registerexempel. Om du vill deklarera .cpp filer som uppfattade som "text" lägger du till följande registerpost:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

filtyper

Hur filassociationer fungerar

innehållsvy efter filtyp eller typ

filtypshanterare

programmatiska identifierare

upplevda typer

associationsmatriser