Управление приложениями по умолчанию

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

Важно!

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

 

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

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

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

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

Элемент программы по умолчанию в панель управления

Программы по умолчанию — это функция, представленная в Windows Vista, доступная непосредственно из меню Пуск, а также панель управления. Она предоставляет новую инфраструктуру, которая работает со стандартными привилегиями пользователей (без повышенных привилегий) и предназначена для того, чтобы пользователи и приложения могли управлять значениями по умолчанию для каждого пользователя. Для пользователей программы по умолчанию предоставляют унифицированный и легко доступный способ управления значениями по умолчанию, сопоставлениями файлов и параметрами автозапуска во всех приложениях в системе. Для приложений использование область для каждого пользователя, предоставляемого API программ по умолчанию, обеспечивает следующие преимущества:

  • Без повышения прав

    Приложению не нужно повышать привилегии для утверждения значений по умолчанию.

  • Хорошее гражданство

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

  • Управление по умолчанию

    API программ по умолчанию предлагают надежный и согласованный механизм для самостоятельной проверки состояния по умолчанию и восстановления потерянных параметров, не прибегая к записи непосредственно в реестр. Однако с Windows 8 мы не рекомендуем, чтобы приложения запрашивали состояние по умолчанию, так как приложение больше не может изменять параметры по умолчанию. Эти изменения могут быть сделаны только пользователем.

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

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

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

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

  • Включение URL-адреса и маркетинговой информации

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

Установка параметров доступа к программе и по умолчанию для компьютера

Set Program Access and Computer Defaults (SPAD) позволяет администраторам управлять значениями по умолчанию на уровне компьютера, которые наследуются всеми новыми пользователями этого компьютера. До Windows 8 SPAD также позволял администраторам восстанавливать сопоставления файлов, если они не будут работать при удалении программ из системы. Однако с Windows 8 spad влияет только на пользовательские значения по умолчанию.

Дополнительные сведения о регистрации приложения в SPAD см. в разделах Работа с настройкой доступа к программам и компьютеров по умолчанию (SPAD) и Регистрация программ с помощью типов клиентов. Конкретные изменения и новые рекомендации обсуждаются в следующих разделах.

Настройка значений по умолчанию в SPAD

Значения по умолчанию для каждого пользователя переопределяют значения по умолчанию для каждого компьютера.

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

Если предварительно Windows 8 приложение реализует параметр Set as Default в SPAD, необходимо следовать этим рекомендациям:

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

Когда приложение Windows 8 реализует параметр Set as Default в SPAD, они должны регистрировать свои типы файлов и протоколы в программах по умолчанию, используя то же имя приложения, которое используется в SPAD. Это позволяет отразить изменение в SPAD как изменение в соответствующей записи Программы по умолчанию для текущего пользователя.

Скрытие доступа в SPAD

Доступ к параметру скрытия для каждого возможного значения по умолчанию в SPAD осуществляется одним из двух способов:

  • Выберите категорию По умолчанию Не майкрософт , которая удаляет доступ ко всем значениям по умолчанию Майкрософт.
  • Выберите категорию Пользовательская и снимите флажок Разрешить доступ к этой программе проверка.

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

  • Персональный компьютер
  • Меню "Пуск"
  • Панель быстрого запуска (только Для Windows Vista и более ранних версий)
  • Область "Уведомления"
  • Контекстные меню
  • Группа задач папок

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

Альтернативный метод скрытия доступа в SPAD

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

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

  • Когда пользователь снимите флажок Разрешить доступ к этой программе в SPAD, отображается следующий пользовательский интерфейс.

    Диалоговое окно vista о скрытии доступа к программе

  • Когда пользователь нажимает кнопку ОК, отображается элемент Программы и компоненты в панель управления, чтобы пользователь смог удалить приложение.

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

    Диалоговое окно windows xp о скрытии доступа к программе

  • Когда пользователь Windows XP нажимает кнопку ОК, отображается элемент Установка и удаление программ в панель управления, чтобы пользователь смог удалить приложение.

Следующий код предоставляет многократно используемые реализации функции скрыть доступ, как описано ранее. Его можно использовать в Windows XP, Windows Vista и Windows 7.

#include <windows.h>
#include <shlwapi.h>
#include <strsafe.h>

PCWSTR c_pszMessage1 = L"To hide access to this program, you need to uninstall it by ";
PCWSTR c_pszMessage2 = L"using\n%s in Control Panel.\n\nWould you like to start %s?";
PCWSTR c_pszApplicationName  = L"Sample App";

int _tmain(int argc, WCHAR* argv[])
{
    OSVERSIONINFO version;
    version.dwOSVersionInfoSize = sizeof(version);

    if (GetVersionEx(&version))
    {
        PCWSTR pszCPLName = NULL;

        if (version.dwMajorVersion >= 6)
        {
            // Windows Vista and later
            pszCPLName = L"Programs and Features";
        }
        else if (version.dwMajorVersion == 5 &&
                 version.dwMinorVersion == 1)
        {
            // XP
            pszCPLName = L"Add/Remove Programs";
        }

        if (pszCPLName != NULL)
        {
            WCHAR szMessage[256], szScratch[256];
            if (SUCCEEDED(StringCchPrintf(szScratch, 
                                          ARRAYSIZE(szScratch), 
                                          c_pszMessage2, 
                                          pszCPLName, 
                                          pszCPLName)))
            {
                if (SUCCEEDED(StringCchCopy(szMessage, 
                                            ARRAYSIZE(szMessage), 
                                            c_pszMessage1)))
                {
                    if (SUCCEEDED(StringCchCat(szMessage, 
                                               ARRAYSIZE(szMessage), 
                                               szScratch)))
                    {
                        if (IDOK == MessageBox(NULL, 
                                               szMessage, 
                                               c_pszApplicationName, 
                                               MB_OKCANCEL))
                        {
                            ShellExecute(NULL, 
                                         NULL, 
                                         L"appwiz.cpl", 
                                         NULL, 
                                         NULL, 
                                         SW_SHOWNORMAL);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

Регистрация для точек входа приложений

Приложение может иметь множество точек входа в операционной системе. Ниже приведены рекомендуемые расположения для точек входа.

  • Персональный компьютер
  • Меню "Пуск"
  • Панель быстрого запуска (только Для Windows Vista и более ранних версий)
  • Область "Уведомления"
  • Контекстные меню
  • Группа задач папок

В этом разделе основное внимание уделяется следующим областям:

Открыть с помощью

Контекстное меню Открыть с помощью позволяет пользователю выбрать приложение, которое может обрабатывать файл определенного типа. Хотя параметр Open With можно использовать для открытия файла с приложением один раз, его также можно использовать для задания значения по умолчанию для этого расширения имени файла. Поэтому приложение всегда должно регистрироваться для параметра Open With , чтобы пользователи представляли это приложение в качестве выбора. Приложения могут регистрировать как типы файлов, так и протоколы для open With. Приложения, которые регистрируют протоколы в платформе программ по умолчанию, автоматически добавляются в параметры Открыть с помощью для протоколов.

Сведения о регистрации для open with см. в статье Общие сведения о сопоставлениях файлов.

Меню "Пуск" и панель быстрого запуска

Чтобы сделать пользователей более доступными для обнаружения, приложения могут добавлять ярлыки в различные расположения в Windows. Наиболее распространенным местом для добавления ярлыка является меню "Пуск ". В Windows Vista и более поздних версиях приложение создает ярлык в скрытой папке %ProgramData%\Microsoft\Windows\Start Menu\Programs, чтобы он отображался в списке программ меню "Пуск " для всех пользователей. Как правило, приложение добавляет вложенную папку, содержащую ярлык.

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

Примечание

Ссылки на выделенные меню "Пуск"в Интернете и электронной почте больше не присутствуют в Windows 7.

 

Чтобы еще больше повысить возможность обнаружения, приложения также могут добавлять ярлыки на рабочий стол и панель быстрого запуска. Приложения должны запрашивать у пользователя разрешение (обычно во время установки или при первом запуске) перед добавлением значка в меню "Пуск" , на рабочем столе или панели быстрого запуска.

Примечание

Панель быстрого запуска больше не доступна в Windows 7. Альтернативой Windows 7 является закрепление приложения на панели задач, но закрепление не может быть выполнено программным способом, так как это исключительно выбор пользователя.

 

Дополнительные сведения см. в следующих статьях:

Установка приложения и значения по умолчанию

Процедуры установки приложений не изменились с момента установки Windows XP, за исключением нового руководства для систем, работающих с версиями Windows старше Windows 8: принимать значения по умолчанию для каждого компьютера во время установки, но не устанавливать значения по умолчанию для каждого пользователя, пока пользователь не запустит приложение. (См . раздел Первый запуск приложения и Значения по умолчанию.) Приложения не должны устанавливать значения по умолчанию для каждого пользователя во время установки, так как в некоторых ситуациях пользователь, устанавливающий приложение, не является предполагаемым пользователем. По состоянию на Windows 8, значения по умолчанию для каждого компьютера не поддерживаются, и приложения не могут изменять параметры по умолчанию для каждого пользователя.

Во время установки приложение должно скопировать двоичные файлы на жесткий диск и записать свои идентификаторы ProgID в реестр. Приложение также должно зарегистрироваться для программ по умолчанию и Открыть с помощью в настоящее время для каждой связи файлов, которые оно является кандидатом для обработки. Приложение может использовать подраздел OpenWithProgIds для регистрации с помощью команды Open With.

Дополнительные сведения см. в следующих статьях:

Обновления приложений и значения по умолчанию

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

Первый запуск приложения и значения по умолчанию

Примечание

С Windows 8 система обрабатывает эту процедуру от имени всех приложений. Сами приложения больше не могут запрашивать и изменять значения по умолчанию. Это может сделать только пользователь. Поэтому приложения не должны пытаться запрашивать текущее значение по умолчанию или изменять его с помощью какого-либо механизма. Однако приложения могут предоставлять точку входа для программ по умолчанию в панель управления путем вызова метода LaunchAdvancedAssociationUI интерфейса IApplicationAssociationRegistrationUI.

 

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

Руководство по установке значений по умолчанию для каждого пользователя: при первом запуске приложения для определенного пользователя оно должно запрашивать пользовательские настройки по умолчанию и сопоставления файлов для себя.

Рекомендуемый пользовательский интерфейс должен предоставить пользователю два четких варианта:

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

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

Примечание

Это не поддерживается с Windows 8.

 

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

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

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

Советы по совместимости приложений

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

Предотвращение активации Per-User виртуализации

В среде контроля учетных записей (UAC) приложения всегда должны запускаться только с правами стандартных пользователей для оптимального взаимодействия с клиентами. По соображениям безопасности приложениям с уровнем привилегий стандартного пользователя запрещается запись в определенные части реестра и в определенные системные файлы. Windows Vista и более поздние версии Windows предоставляют уровень временной совместимости приложений (AppCompat), чтобы помочь приложениям выполнить переход. Заблокированные попытки записи в реестр или в системные файлы "виртуализированы", чтобы приложение продолжало работать, но конфиденциальные области системы не изменяются. Однако приложения не должны полагаться на технологию AppCompat в качестве долгосрочного решения. Вместо этого приложения должны использовать множество доступных средств, чтобы убедиться, что они могут успешно выполняться с правами обычного пользователя. Для этого может потребоваться некоторое перепрограммирование приложения, но это необходимо сделать в интересах долгосрочной совместимости.

Избегайте предупреждений или блокировок AppCompat в помощнике по совместимости программ

Помощник по совместимости программ (PCA) предоставляется в Windows Vista и более поздних версиях. Его цель — предоставить автоматизированный метод для улучшения работы старых программ с проблемами совместимости. PCA отслеживает программы на наличие известных проблем. Если проблема обнаружена, она уведомляет пользователя о проблеме и предлагает применить эффективные решения, прежде чем пользователь снова запустит программу. Чтобы избежать появления этих предупреждений или блоков, независимым поставщикам программного обеспечения следует использовать множество доступных средств для обеспечения совместимости приложений с Windows Vista, Windows 7 и более поздних версий.

Поддержка предыдущих версий операционной системы Windows

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

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

Дополнительные сведения см. в разделе OSVERSIONINFO.

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

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

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

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

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