Программы по умолчанию

Используйте программы по умолчанию , чтобы задать пользовательский интерфейс по умолчанию. Пользователи могут получить доступ к программам по умолчанию из панель управления или непосредственно из меню Пуск. Средство "Установить доступ к программам и компьютер по умолчанию" (SPAD), основной интерфейс по умолчанию для пользователей Windows XP, теперь входит в состав программ по умолчанию.

Важно!

Этот раздел не относится к Windows 10. Способ работы сопоставлений файлов по умолчанию изменился в Windows 10. Дополнительные сведения см. в разделе Изменения в том, как Windows 10 обрабатывает приложения по умолчанию в этой записи.

 

Если пользователь устанавливает для программы значения по умолчанию с помощью программ по умолчанию, параметр по умолчанию применяется только к такому пользователю, а не к другим пользователям, которые могут использовать тот же компьютер. Программы по умолчанию предоставляют набор API (нерекомендуемых в Windows 8), которые позволяют независимым поставщикам программного обеспечения включать свои программы или приложения в систему по умолчанию. Набор API также помогает независимым поставщикам программного обеспечения лучше управлять своим состоянием по умолчанию.

Этот раздел организован следующим образом:

Программы по умолчанию предназначены в первую очередь для приложений, использующих стандартные типы файлов, такие как файлы .mp3 или .jpg, или стандартные протоколы, такие как HTTP или mailto. Приложения, использующие собственные проприетарные протоколы и сопоставления файлов, обычно не используют функции программ по умолчанию .

После регистрации приложения для функциональных возможностей программ по умолчанию с помощью набора API доступны следующие параметры и функции:

  • Восстановите все зарегистрированные значения по умолчанию для приложения. Не рекомендуется для Windows 8.
  • Восстановление одного зарегистрированного значения по умолчанию для приложения. Не рекомендуется для Windows 8.
  • Запрос владельца определенного значения по умолчанию в одном вызове вместо поиска в реестре. Вы можете запросить значение по умолчанию для сопоставления файлов, протокола или канонической команды меню "Пуск ".
  • Запустите пользовательский интерфейс для определенного приложения, в котором пользователь может задать отдельные значения по умолчанию.
  • Удалите все связи для каждого пользователя.

Программы по умолчанию также предоставляют пользовательский интерфейс, позволяющий зарегистрировать приложение для предоставления дополнительных сведений пользователю. Например, приложение с цифровой подписью может содержать URL-адрес домашней страницы производителя.

Использование связанного набора API может помочь приложению правильно работать в соответствии с функцией контроля учетных записей пользователей (UAC), представленной в Windows Vista. В разделе UAC администратор отображается в системе как обычный пользователь, поэтому администратор обычно не может записывать данные в поддерево HKEY_LOCAL_MACHINE . Это ограничение является функцией безопасности, которая не позволяет процессу действовать в качестве администратора без ведома администратора.

Установка программы пользователем обычно выполняется как процесс с повышенными привилегиями. Однако попытки приложения изменить поведение связи по умолчанию на уровне компьютера после установки будут неудачными. Вместо этого значения по умолчанию должны быть зарегистрированы на уровне каждого пользователя, что не позволяет нескольким пользователям перезаписывать значения по умолчанию друг друга.

Иерархическая структура реестра для сопоставлений файлов и протоколов имеет приоритет над значениями по умолчанию на уровне компьютера. Некоторые приложения содержат в коде точки, которые временно повышают их права, когда они утверждают, что значения по умолчанию зарегистрированы в HKEY_LOCAL_MACHINE. Эти приложения могут столкнуться с непредвиденными результатами, если другое приложение уже зарегистрировано как по умолчанию для каждого пользователя. Использование программ по умолчанию предотвращает эту неоднозначность и гарантирует ожидаемые результаты на уровне каждого пользователя.

Регистрация приложения для использования с программами по умолчанию

В этом разделе показаны подразделы реестра и значения, необходимые для регистрации приложения в программах по умолчанию. Он содержит полный пример.

В этом разделе рассматриваются следующие вопросы.

Программы по умолчанию требуют, чтобы каждое приложение явным образом регистрировало сопоставления файлов, сопоставления MIME и протоколы, для которых приложение должно быть указано в качестве возможного значения по умолчанию. Связи регистрируются с помощью следующих элементов реестра, которые подробно описаны далее в этом разделе в разделе Подраздел регистрации и Описание значений:

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%

В следующем примере показаны записи реестра для вымышленного браузера Contoso, который называется 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

Приложение должно предоставить определенный Идентификатор ProgID. Обязательно включите все сведения, которые обычно записываются в универсальный подраздел по умолчанию для расширения. Например, вымышленный проигрыватель мультимедиа Litware предоставляет зависящий от приложения HKEY_LOCAL_MACHINE\классы\SOFTWARE\LitwarePlayer11.AssocFile.MP3 подраздел. Этот подраздел включает в себя все сведения в универсальном подразделе по умолчанию HKEY_LOCAL_MACHINE\классах\SOFTWARE\.mp3 а также любые дополнительные сведения, которые требуется зарегистрировать приложением. Это гарантирует, что если пользователь восстановит связь .mp3 в проигрывателе Litware, сведения о проигрывателе Litware останутся неизменными и не были перезаписаны другим приложением. (Перезапись может произойти, если подраздел по умолчанию является единственным источником этих сведений.)

При сопоставлении ProgID с расширением имени файла или протоколом приложение может сопоставить "один к одному" или "один ко многим". В примере ContosoHTML указывает на один Идентификатор ProgID, который предоставляет сведения о оболочке для расширений .htm, .html, SHTML, XHT И XHTML. Так как для каждого протокола существует отдельный Идентификатор ProgID, при использовании протоколов каждый протокол должен иметь собственную строку выполнения.

Если тип MIME можно просмотреть в браузере, progID для типа MIME должен содержать подраздел CLSID , использующий идентификатор класса (CLSID) соответствующего приложения. Этот ИДЕНТИФИКАТОР CLSID используется для поиска clSID в базе данных MIME, хранящейся втипе контентабазы данных\MIME\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\. Если тип MIME не предназначен для просмотра в браузере, этот шаг можно опустить.

Описание подраздела регистрации и значения

В этом разделе описываются отдельные подразделы и значения реестра, используемые при регистрации приложения в программах по умолчанию, как показано выше.

Возможности

Подраздел Capabilities содержит все сведения о программах по умолчанию для конкретного приложения. Заполнитель %ApplicationCapabilityPath% ссылается на путь реестра из HKEY_CURRENT_USER или HKEY_LOCAL_MACHINE в подраздел " Возможности " приложения. Этот подраздел содержит важные значения, показанные в следующей таблице.

Значение Тип Значение
ApplicationDescription REG_SZ или REG_EXPAND_SZ Обязательно. Чтобы пользователь мог выбрать назначение по умолчанию, приложение должно предоставить строку, описывающую возможности приложения. Хотя в предыдущем примере Contoso описание назначается непосредственно значению ApplicationDescription, приложения обычно предоставляют описание как ресурс, внедренный в файл .dll для упрощения локализации. Если ApplicationDescription не указан, приложение не отображается в списках пользовательских интерфейсов потенциальных программ по умолчанию.
ApplicationName REG_SZ или REG_EXPAND_SZ Необязательный элемент. Имя, под которым программа отображается в пользовательском интерфейсе программ по умолчанию. Если эти данные не предоставляются приложением, в пользовательском интерфейсе используется имя исполняемой программы, связанной с первым зарегистрированным идентификатором ProgID для приложения. Имя приложения всегда должно совпадать с именем, зарегистрированным в разделе Зарегистрированные приложения. ApplicationName можно использовать, если требуется, чтобы разные типы приложений, такие как браузер и почтовый клиент, указывали на один и тот же исполняемый файл, в то время как они отображались как разные имена.
Скрытый REG_DWORD Необязательный элемент. Задайте для этого значения значение 1, чтобы отключить приложение из списка программ в диалоговом окне Установка программ по умолчанию . Если это значение равно 0 или нет, приложение обычно отображается в списке.

 

FileAssociations

Подраздел FileAssociations содержит определенные сопоставления файлов, которые утверждаются приложением. Эти утверждения хранятся в виде значений с одним значением для каждого расширения. Связи указывают на идентификатор ProgID для конкретного приложения, а не на универсальный Идентификатор ProgID. Однако не все связи должны указывать на один и тот же Идентификатор ProgID.

MIMEAssociations

Подраздел MIMEAssociations содержит определенные типы MIME, которые утверждаются приложением. Эти утверждения хранятся в виде значений с одним значением для каждого типа MIME. Имя значения для каждого типа MIME должно точно соответствовать имени MIME, которое хранится в базе данных MIME. Этому значению также необходимо назначить идентификатор ProgID конкретного приложения, содержащий соответствующий ИДЕНТИФИКАТОР CLSID приложения.

Startmenu

Подраздел Меню Startmenu связан с назначаемыми пользователем элементами Интернета и электронной почты в меню "Пуск ". Приложение должно регистрироваться отдельно в качестве претендента на эти записи. Дополнительные сведения см. в разделе Регистрация программ с помощью типов клиентов.

Примечание

В Windows 7 в меню "Пуск" больше нет записей в Интернете и электронной почте. Данные реестра, связанные с записью электронной почты, по-прежнему используются для клиента MAPI по умолчанию, но данные реестра, связанные с записью Интернета , не используются Windows вообще.

 

При связывании регистрации в меню "Пуск" приложения с регистрацией программ по умолчанию приложение отображается как потенциальное значение по умолчанию в пользовательском интерфейсе Установить связи . Если пользователь выбрал приложение в качестве приложения по умолчанию, а затем позже решил восстановить все значения по умолчанию, приложение восстанавливается в меню "Пуск" для этого пользователя. Дополнительные сведения и иллюстрацию см. в разделе Пользовательский интерфейс программ по умолчанию далее в этом разделе.

Подраздел Startmenu содержит две записи: StartMenuInternet и Mail, которые соответствуют каноническим позициям Интернета и электронной почты в меню "Пуск ". Приложение присваивает StartMenuInternet или Mail значение, равное имени зарегистрированного подраздела приложения в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet или HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail (как описано в разделе Регистрация программ с типами клиентов).

В случае с канонической позицией электронной почты в меню "Пуск" она представляет клиент MAPI по умолчанию и, следовательно, предполагается, что способен передавать вызовы MAPI. В Windows 7, хотя в меню "Пуск" больше нет канонической позиции электронной почты, этот подраздел по-прежнему используется для клиента MAPI по умолчанию. Приложение, утверждающее почтовое значение по умолчанию, должно зарегистрироваться в качестве обработчика MAPI в следующем подразделе:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName

Если почтовый клиент не поддерживает MAPI, но по-прежнему хочет бороться за каноническую позицию электронной почты в меню "Пуск", он может зарегистрировать командную строку в следующем подразделе:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Clients
         Mail
            CanonicalName
               shell
                  open
                     command

Кроме того, в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\CanonicalName добавьте значение по умолчанию с именем приложения.

Эти записи позволяют запускать приложение из позиции электронной почты меню "Пуск". Обратите внимание, что вызовы MAPI по-прежнему выполняются в приложении и либо переходят к предыдущему обработчику MAPI, либо завершаются сбоем, если обработчик MAPI не задан. Дополнительные сведения см. в разделе Регистрация программ с помощью типов клиентов.

UrlAssociations

Подраздел UrlAssociations содержит определенные протоколы URL-адресов, которые утверждаются приложением. Эти утверждения хранятся в виде значений с одним значением для каждого протокола. Каждый протокол должен указывать на идентификатор ProgID для конкретного приложения, а не на универсальный Идентификатор ProgID. Как упоминалось в примере Contoso, для каждого протокола можно использовать разные идентификаторы ProgID, чтобы у каждого из них была собственная строка выполнения.

RegisteredApplications

Полный подраздел для RegisteredApplications :

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\RegisteredApplications

Этот подраздел предоставляет операционной системе расположение в реестре сведений о программах по умолчанию для приложения. Расположение хранится в виде значения, имя которого должно совпадать с именем приложения.

Пример полной регистрации

В этом примере показаны подразделы и значения, используемые при регистрации вымышленного проигрывателя мультимедиа Litware. В этом примере содержатся записи ProgID, чтобы показать, как все они подходят друг другу.

В следующем подразделе показан идентификатор ProgID для конкретного приложения для .mp3 типа MIME:

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

Далее следует идентификатор ProgID конкретного приложения, который связывает программу Litware с расширением имени файла .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

В следующих записях отображается объединенный идентификатор ProgID для .mpeg типа MIME и расширения имени файла.

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

Следующие записи регистрируют программу Litware в программах по умолчанию и используют ранее зарегистрированные идентификаторы ProgID.

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

Наконец, в этом примере регистрируется расположение регистрации программ по умолчанию Litware.

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

Становится браузером по умолчанию

Регистрация в браузере должна соответствовать рекомендациям, описанным в этом разделе. После установки браузера Windows может предоставить пользователю системное уведомление, с помощью которого пользователь может выбрать браузер в качестве системного по умолчанию. Это уведомление отображается при выполнении следующих условий:

  • Установщик браузера вызывает SHChangeNotify с флагом SHCNE_ASSOCCHANGED , чтобы сообщить Windows, что зарегистрированы новые обработчики протоколов.
  • Windows обнаруживает, что одно или несколько новых приложений зарегистрированы для обработки протоколов http:// и https://, и пользователь еще не получил уведомления. Иными словами, пользователю не было показано ни одно из следующих действий: системное уведомление о рекламе приложения, всплывающее окно OpenWith, содержащее приложение, или страница панель управления панель управления для приложения.

В следующем примере показан рекомендуемый код регистрации, который должен запускать установщик браузера после записи разделов реестра.

SHChangeNotify сначала уведомляет систему о доступности новых вариантов связи. Вызов SHChangeNotify необходим для обеспечения правильной работы системных значений по умолчанию.

Затем оператор спящего режима позволяет системным процессам обрабатывать уведомление.

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

Если пользователь отклоняет или игнорирует полученное уведомление или всплывающий элемент, не выбрав новый браузер по умолчанию, браузер по умолчанию остается без изменений. Обратите внимание, что пользователь также может изменить браузер по умолчанию в любое время с помощью других механизмов, в том числе с помощью настройки пользовательских значений по умолчанию в панель управления.

Пользовательский интерфейс программ по умолчанию

На иллюстрациях в этом разделе показан пользовательский интерфейс для программ по умолчанию , как это видит пользователь.

На следующем рисунке показано окно main Программ по умолчанию в панель управления.

Снимок экрана: страница входа в программы по умолчанию

Когда пользователь выбирает параметр Задать программы по умолчанию , появляется следующее окно. Пользователи могут использовать эту страницу для назначения программы по умолчанию для всех типов файлов и протоколов, для которых эта программа является возможной по умолчанию. Как показано на следующем рисунке, все зарегистрированные программы и значок программы отображаются в поле Программы слева.

Снимок экрана: страница настройки программ по умолчанию

Когда пользователь выбирает программу из списка, отображаются значок программы и поставщик. Если URL-адрес внедрен в цифровой сертификат программы, программа также может отобразить URL-адрес. Программы, не имеющие цифровой подписи, не могут отображать URL-адрес.

Также отображается описательный текст, который предоставляется программой во время регистрации. Этот текст является обязательным. Под полем описания указано, сколько значений по умолчанию в настоящее время назначено программе из полного номера, для обработки которых она зарегистрирована.

Чтобы назначить или восстановить программу по умолчанию для всех файлов и протоколов, для которых она зарегистрирована, пользователь щелкает параметр Задать эту программу по умолчанию .

Чтобы назначить программе отдельные типы файлов и протоколы, пользователь щелкает параметр Выбрать значения по умолчанию для этой программы , который отображает окно Установить связи для программы , как показано на следующем рисунке.

Примечание

Рекомендуется вызывать набор связей для программы с помощью IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI.

 

Снимок экрана: набор взаимосвязей для страницы программы

Рекомендации по использованию программ по умолчанию

В этом разделе приведены рекомендации по использованию программ по умолчанию при регистрации приложений. Он также предлагает предложения по проектированию для создания приложения, которое предоставляет пользователям оптимальную функциональность программ по умолчанию .

Во время установки

Помимо процедур установки, обычно используемых в Windows XP, приложение на основе Windows Vista или более поздних версий должно регистрироваться с помощью функции программ по умолчанию , чтобы воспользоваться преимуществами этой функции.

Во время установки выполните следующую последовательность действий. Шаги 1–3 соответствуют шагам, которые использовались в Windows XP; Шаг 4 был новым в Windows Vista.

  1. Установите необходимые двоичные файлы.
  2. Запись идентификаторов ProgID в HKEY_LOCAL_MACHINE. Обратите внимание, что приложения должны создавать идентификаторы ProgID для конкретного приложения для своих связей.
  3. Зарегистрируйте приложение с помощью программ по умолчанию , как описано ранее в разделе Регистрация приложения для использования с программами по умолчанию.

После установки

В этом разделе описывается, как запрос приложения должен сначала представить параметры по умолчанию каждому пользователю. В нем также рассматривается, как приложение может отслеживать свое состояние по умолчанию для возможных связей и протоколов.

Интерфейсы первого запуска

Когда приложение запускается пользователем в первый раз, рекомендуется, чтобы приложение отображал пользовательский интерфейс для пользователя, который обычно включает следующие два варианта:

  • Примите параметры приложения по умолчанию. Этот параметр установлен по умолчанию.
  • Настройка параметров приложения по умолчанию.

До Windows 8, если пользователь принимает параметры по умолчанию, приложение вызывает IApplicationAssociationRegistration::SetAppAsDefaultAll, который преобразует все связи уровня компьютера, объявленные во время установки, в параметры для каждого пользователя.

Если пользователь решает настроить параметры, приложение вызывает IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI для отображения пользовательского интерфейса сопоставления файлов. На следующем рисунке показано это окно для вымышленного проигрывателя мультимедиа Litware.

Снимок экрана: сопоставление наборов для страницы программы для litware

В окне сопоставления файлов отображаются значения по умолчанию, зарегистрированные приложением, а также текущее значение по умолчанию для других расширений и протоколов. Когда пользователь завершит настройку значений по умолчанию, он нажимает кнопку Сохранить , чтобы зафиксировать изменения. Если пользователь нажимает кнопку Отмена, окно закроется без сохранения изменений.

Этот пользовательский интерфейс следует использовать для приложений, а не создавать собственные. Таким образом вы сохраните ресурсы, которые ранее требовались для разработки пользовательского интерфейса сопоставления файлов. Вы также гарантируете правильное сохранение связей.

Настройка приложения для проверки того, является ли оно значением по умолчанию

Примечание

Эта возможность больше не поддерживается с Windows 8.

 

Приложения обычно проверка, задано ли для них значение по умолчанию при запуске. Настройте приложения для проверка, вызвав метод IApplicationAssociationRegistration::QueryAppIsDefault или IApplicationAssociationRegistration::QueryAppIsDefaultAll.

Если приложение определяет, что оно не используется по умолчанию, оно может предоставить пользовательский интерфейс, который предложит пользователю принять текущую ситуацию или сделать приложение по умолчанию. Всегда включайте в этот пользовательский интерфейс поле проверка, выбранное по умолчанию и предоставляющее возможность больше не запрашивать.

Примечание

Выбор по умолчанию должен быть управляемым пользователем. Приложение никогда не должно вернуть значение по умолчанию без запроса пользователя.

 

На следующем рисунке показан пример диалогового окна.

Снимок экрана: пример диалогового окна

Дополнительные ресурсы

Рекомендации по сопоставлениям файлов

Пример сценария сопоставления файлов

Рекомендации по управлению приложениями по умолчанию в Windows Vista и более поздних версиях

Настройка доступа к программе и значений по умолчанию для компьютера (SPAD)