Udostępnij za pośrednictwem


Rejestracja aplikacji

W tym temacie omówiono, w jaki sposób aplikacje mogą uwidaczniać informacje o sobie niezbędne do włączenia niektórych scenariuszy. Obejmuje to informacje potrzebne do zlokalizowania aplikacji, czasowników obsługiwanych przez aplikację oraz typów plików, które może obsłużyć aplikacja.

Ten temat jest zorganizowany w następujący sposób:

Nuta

Aplikacje można również zarejestrować w ustawieniu ustawień dostępu do programu i ustawień domyślnych komputera () i ustawić domyślne programy (SYDP) aplikacji panelu sterowania. Aby uzyskać informacje na temat rejestrowania aplikacji i SYDP, zobacz Guidelines for File Associations and Default Programsi Set Program Access and Computer Defaults ().

Znajdowanie pliku wykonywalnego aplikacji

Gdy funkcja ShellExecuteExecuteEx jest wywoływana z nazwą pliku wykonywalnego w parametrze lpFile, istnieje kilka miejsc, w których funkcja szuka pliku. Zalecamy zarejestrowanie aplikacji w podkluczu rejestru Ścieżki aplikacji. Pozwala to uniknąć konieczności modyfikowania zmiennej środowiskowej PATH systemu przez aplikacje.

Plik jest poszukiwany w następujących lokalizacjach:

  • Bieżący katalog roboczy.
  • Tylko katalog windows (nie są przeszukiwane podkatalogi).
  • Katalog Windows\System32.
  • Katalogi wymienione w zmiennej środowiskowej PATH.
  • Zalecane: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion ścieżki aplikacji\

Rejestrowanie aplikacji

Zarówno ścieżki aplikacji , jak i Applications są używane do rejestrowania i kontrolowania zachowania systemu w imieniu aplikacji. Podklucz Ścieżki aplikacji jest preferowaną lokalizacją.

Używanie podklucza ścieżek aplikacji

W systemie Windows 7 lub nowszym zdecydowanie zalecamy instalowanie aplikacji na użytkownika, a nie na maszynę. Aplikację zainstalowaną dla poszczególnych użytkowników można zarejestrować w obszarze HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ścieżki aplikacji. Aplikację zainstalowaną dla wszystkich użytkowników komputera można zarejestrować w obszarze HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Ścieżki aplikacji.

Wpisy znalezione w obszarze Ścieżki aplikacji są używane głównie w następujących celach:

  • Aby zamapować nazwę pliku wykonywalnego aplikacji na w pełni kwalifikowaną ścieżkę tego pliku.
  • Aby uzyskać informacje wstępne do zmiennej środowiskowej PATH dla poszczególnych aplikacji, dla poszczególnych procesów.

Jeśli nazwa podklucza ścieżek aplikacji jest zgodna z nazwą pliku, powłoka wykonuje dwie akcje:

  • Wpis (Wartość domyślna) jest używany jako w pełni kwalifikowana ścieżka pliku.
  • Wpis Ścieżka dla tego podklucza jest wstępnie pended do zmiennej środowiskowej PATH tego procesu. Jeśli nie jest to wymagane, można pominąć wartość Ścieżka.

Potencjalne problemy, o których należy pamiętać, obejmują:

  • Powłoka ogranicza długość wiersza polecenia, aby MAX_PATH * 2 znaki. Jeśli istnieje wiele plików wymienionych jako wpisy rejestru lub ich ścieżki są długie, nazwy plików później na liście mogą zostać utracone, ponieważ wiersz polecenia zostanie obcięty.
  • Niektóre aplikacje nie akceptują wielu nazw plików w wierszu polecenia.
  • Niektóre aplikacje, które akceptują wiele nazw plików, nie rozpoznają formatu, w którym program Shell je udostępnia. Powłoka udostępnia listę parametrów jako ciąg cytowany, ale niektóre aplikacje mogą wymagać ciągów bez cudzysłowów.
  • Nie wszystkie elementy, które można przeciągać, są częścią systemu plików; na przykład drukarki. Te elementy nie mają standardowej ścieżki Win32, więc nie ma możliwości zapewnienia znaczącej wartości lpParameters do ShellExecuteEx.

Użycie wpisu DropTarget pozwala uniknąć tych potencjalnych problemów, zapewniając dostęp do wszystkich formatów schowka, w tym CFSTR_SHELLIDLIST (dla długich list plików) i CFSTR_FILECONTENTS (w przypadku obiektów niezwiązanych z systemem plików).

Aby zarejestrować i kontrolować zachowanie aplikacji za pomocą podklucza ścieżki aplikacji:

  1. Dodaj podklucz o takiej samej nazwie jak plik wykonywalny do podklucza App Paths, jak pokazano w poniższym wpisie rejestru.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Zobacz poniższą tabelę, aby uzyskać szczegółowe informacje na temat wpisów Ścieżek aplikacji podklucza.

Wpis rejestru Szczegóły
(Ustawienie domyślne) Czy w pełni kwalifikowana ścieżka do aplikacji. Nazwa aplikacji podana w wpisie (wartość domyślna) może być określona z rozszerzeniem .exe lub bez tego rozszerzenia. W razie potrzeby funkcja ShellExecuteEx dodaje rozszerzenie podczas wyszukiwania ścieżek aplikacji podklucza. Wpis jest typu REG_SZ.
DontUseDesktopChangeRouter Jest obowiązkowy dla aplikacji debugera, aby uniknąć zakleszczenia okien dialogowych podczas debugowania procesu Eksploratora Windows. Ustawienie wpisu DontUseDesktopChangeRouter powoduje jednak nieco mniej wydajną obsługę powiadomień o zmianie. Wpis jest typu REG_DWORD, a wartość jest 0x1.
DropTarget Jest identyfikatorem klasy (CLSID). Wpis DropTarget zawiera identyfikator CLSID obiektu (zazwyczaj serwer lokalny, a nie serwer przetwarzania), który implementuje IDropTarget. Domyślnie, gdy obiekt docelowy upuszczania jest plikiem wykonywalnym i nie podano żadnej wartości DropTarget, powłoka konwertuje listę porzuconych plików na parametr wiersza polecenia i przekazuje go do ShellExecuteEx za pośrednictwem lpParameters.
Ścieżka Dostarcza ciąg (w postaci rozdzielanej średnikami listy katalogów), aby dołączyć do zmiennej środowiskowej PATH po uruchomieniu aplikacji przez wywołanie ShellExecuteEx. Jest to w pełni kwalifikowana ścieżka do .exe. Jest to REG_SZ. W systemie Windows 7 lub nowszymtyp może być REG_EXPAND_SZi jest często REG_EXPAND_SZ %ProgramFiles%. Uwaga: Oprócz pozycji (Domyślna), Ścieżka i DropTarget rozpoznawanych przez powłokę aplikacja może również dodawać wartości niestandardowe do podklucza ścieżek aplikacji pliku wykonywalnego. Zachęcamy deweloperów aplikacji do używania podklucza App Paths w celu udostępnienia ścieżki specyficznej dla aplikacji zamiast dodawania do globalnej ścieżki systemowej.
SupportedProtocols Tworzy ciąg zawierający schematy protokołów URL dla danego klucza. Może to zawierać wiele wartości rejestru, aby wskazać, które schematy są obsługiwane. Ten ciąg jest zgodny z formatem scheme1:scheme2. Jeśli ta lista nie jest pusta, plik: zostanie dodany do ciągu. Ten protokół jest niejawnie obsługiwany, gdy zdefiniowano SupportedProtocols.
UseUrl Wskazuje, że aplikacja może zaakceptować adres URL (zamiast nazwy pliku) w wierszu polecenia. Aplikacje, które mogą otwierać dokumenty bezpośrednio z Internetu, takie jak przeglądarki internetowe i odtwarzacze multimedialne, powinny ustawić ten wpis.
Gdy funkcja ShellExecuteEx uruchamia aplikację, a wartość UseUrl=1 nie jest ustawiona, ShellExecuteEx pobiera dokument do pliku lokalnego i wywołuje procedurę obsługi na kopii lokalnej.
Jeśli na przykład aplikacja ma ten wpis i użytkownik kliknie prawym przyciskiem myszy plik przechowywany na serwerze internetowym, czasownik Otwórz zostanie udostępniony. Jeśli nie, użytkownik będzie musiał pobrać plik i otworzyć kopię lokalną.
Wpis UseUrl jest typu REG_DWORD, a wartość jest 0x1.
W systemie Windows Vista i starszych wpis wskazał, że adres URL powinien zostać przekazany do aplikacji wraz z lokalną nazwą pliku, po wywołaniu za pośrednictwem shellExecuteEx. W systemie Windows 7 wskazuje, że aplikacja może zrozumieć dowolny przekazany do niego adres URL http lub https bez konieczności podawania nazwy pliku pamięci podręcznej. Ten klucz rejestru jest skojarzony z kluczem SupportedProtocols.

Używanie podklucza aplikacji

Dzięki włączeniu wpisów rejestru w podkluczu HKEY_CLASSES_ROOT\Applications\ApplicationName.exe aplikacje mogą udostępniać informacje specyficzne dla aplikacji przedstawione w poniższej tabeli.

Wpis rejestru Opis
shell\verb Udostępnia metodę czasownika wywoływania aplikacji z platformy OpenWith. Bez podanej tutaj definicji czasownika system zakłada, że aplikacja obsługuje CreateProcessi przekazuje nazwę pliku w wierszu polecenia. Ta funkcja ma zastosowanie do wszystkich metod czasowników, w tym DropTarget, ExecuteCommand i Dynamic Data Exchange (DDE).
DefaultIcon Umożliwia aplikacji podanie konkretnej ikony reprezentującej aplikację zamiast pierwszej ikony przechowywanej w pliku .exe.
FriendlyAppName Zapewnia sposób uzyskiwania nazwy lokalizowalnej do wyświetlenia dla aplikacji, a nie tylko wyświetlanych informacji o wersji, które mogą nie być lokalizowalne. Zapytanie skojarzenia ASSOCSTR odczytuje tę wartość wpisu rejestru i wraca do użycia nazwy FileDescription w informacjach o wersji. Jeśli brakuje tej nazwy, zapytanie skojarzenia domyślnie ma nazwę wyświetlaną pliku. Aplikacje powinny używać ASSOCSTR_FRIENDLYAPPNAME do pobierania tych informacji w celu uzyskania odpowiedniego zachowania.
SupportedTypes Wyświetla listę typów plików, które obsługuje aplikacja. Dzięki temu aplikacja może być wyświetlana w menu kaskadowym okna dialogowego Otwórz za pomocą.
NoOpenWith Wskazuje, że do otwierania tego typu pliku nie określono żadnej aplikacji. Należy pamiętać, że jeśli podklucz OpenWithProgIDs został ustawiony dla aplikacji według typu pliku, a sam podklucz ProgID nie ma również wpisu NoOpenWith, ta aplikacja pojawi się na liście zalecanych lub dostępnych aplikacji, nawet jeśli określono wpis NoOpenWith. Aby uzyskać więcej informacji, zobacz How to Include an Application in the Open With dialog (Jak dołączać aplikację do okna dialogowego Otwieranie za pomocą) i How to exclude an Application from the Open with dialog (Jak wykluczyć aplikację z okna dialogowego Otwórz za pomocą).
IsHostApp Wskazuje, że proces jest procesem hosta, takim jak Rundll32.exe lub Dllhost.exe, i nie należy go uwzględniać w przypadku przypinania lub dołączania menu Start na liście najczęściej używanych (MFU). Po uruchomieniu za pomocą skrótu zawierającego listę argumentów innych niż null lub jawne identyfikatory modelu użytkownika aplikacji (AppUserModelID), proces można przypiąć (jako ten skrót). Takie skróty są kandydatami do włączenia do listy MFU.
NoStartPage Wskazuje, że plik wykonywalny i skróty aplikacji powinny zostać wykluczone z menu Start oraz z przypinania lub dołączania do listy MFU. Ten wpis jest zwykle używany do wykluczania narzędzi systemowych, instalatorów i dezinstalatorów oraz plików readme.
UseExecutableForTaskbarGroupIcon Powoduje, że pasek zadań używa domyślnej ikony tego pliku wykonywalnego, jeśli nie ma przypiętego skrótu dla tej aplikacji, a zamiast ikony okna, które zostało napotkane po raz pierwszy.
TaskbarGroupIcon Określa ikonę używaną do zastąpienia ikony paska zadań. Ikona okna jest zwykle używana na pasku zadań. Ustawienie wpisu TaskbarGroupIcon powoduje, że system używa ikony z .exe dla aplikacji.

Przykłady

Poniżej przedstawiono kilka przykładów rejestracji aplikacji za pośrednictwem podklucza HKEY_CLASSES_ROOT\Applications\ApplicationName.exe. Wszystkie wartości wpisu rejestru są typu REG_SZ, z wyjątkiem DefaultIcon, który jest typu REG_EXPAND_SZ.

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

Rejestrowanie czasowników i innych informacji o skojarzeniu plików

Podklucze zarejestrowane w HKEY_CLASSES_ROOT\SystemFileAssociations umożliwiają powłoki zdefiniowanie domyślnego zachowania atrybutów dla typów plików i włączenie współużytkowanych skojarzeń plików. Gdy użytkownicy zmienią domyślną aplikację dla typu pliku, identyfikator ProgID nowej domyślnej aplikacji ma priorytet w dostarczaniu czasowników i innych informacji o skojarzeniu. Ten priorytet jest spowodowany tym, że jest to pierwszy wpis w tablicy skojarzeń. Jeśli program domyślny zostanie zmieniony, informacje w ramach poprzedniego identyfikatora progID nie są już dostępne.

Aby aktywnie radzić sobie z konsekwencjami zmiany w programach domyślnych, można użyć HKEY_CLASSES_ROOT\SystemFileAssociations do rejestrowania czasowników i innych informacji o skojarzeniu. Ze względu na ich lokalizację po identyfikatorze ProgID w tablicy skojarzeń te rejestracje są niższego priorytetu. Te klasy SystemFileAssociationsregistrations są stabilne nawet wtedy, gdy użytkownicy zmieniają programy domyślne i udostępniają lokalizację rejestrowania pomocniczych czasowników, które zawsze będą dostępne dla określonego typu pliku. Aby zapoznać się z przykładem rejestru, zobacz Rejestrowanie typu postrzeganego w dalszej części tego tematu.

Poniższy przykład rejestru pokazuje, co się stanie, gdy użytkownik uruchamia domyślne programy elementu w Panelu sterowania, aby zmienić ustawienie domyślne dla plików .mp3 na App2ProgID. Po zmianie wartości domyślnej czasownik Verb1 nie jest już dostępny, a czasownik Verb2 staje się wartością domyślną.

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

Rejestrowanie typu postrzeganego

Wartości rejestru dla postrzeganych typów są definiowane jako podklucze HKEY_CLASSES_ROOT\SystemFileAssociations podklucz rejestru. Na przykład postrzegany typ tekst jest rejestrowany w następujący sposób:

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

Postrzegany typ pliku jest wskazywany przez uwzględnienie wartości PerceivedType w podkluczu typu pliku. Wartość PerceivedType jest ustawiona na nazwę postrzeganego typu zarejestrowanego w obszarze HKEY_CLASSES_ROOT\SystemFileAssociations podklucza rejestru, jak pokazano w poprzednim przykładzie rejestru. Aby zadeklarować pliki .cpp jako postrzeganego typu "text", na przykład dodaj następujący wpis rejestru:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

typy plików

jak działają skojarzenia plików

widoku zawartości według typu pliku lub rodzaju

weryfikatora typu pliku

Programy obsługi typów plików

identyfikatory programowe

postrzegane typy

tablice skojarzeń