Перечисление FILETYPEATTRIBUTEFLAGS (shlwapi.h)

Указывает константы FILETYPEATTRIBUTEFLAGS , используемые в значении EditFlags раздела реестра PROGID для сопоставления файлов.

Синтаксис

typedef enum {
  FTA_None = 0x00000000,
  FTA_Exclude = 0x00000001,
  FTA_Show = 0x00000002,
  FTA_HasExtension = 0x00000004,
  FTA_NoEdit = 0x00000008,
  FTA_NoRemove = 0x00000010,
  FTA_NoNewVerb = 0x00000020,
  FTA_NoEditVerb = 0x00000040,
  FTA_NoRemoveVerb = 0x00000080,
  FTA_NoEditDesc = 0x00000100,
  FTA_NoEditIcon = 0x00000200,
  FTA_NoEditDflt = 0x00000400,
  FTA_NoEditVerbCmd = 0x00000800,
  FTA_NoEditVerbExe = 0x00001000,
  FTA_NoDDE = 0x00002000,
  FTA_NoEditMIME = 0x00008000,
  FTA_OpenIsSafe = 0x00010000,
  FTA_AlwaysUnsafe = 0x00020000,
  FTA_NoRecentDocs = 0x00100000,
  FTA_SafeForElevation = 0x00200000,
  FTA_AlwaysUseDirectInvoke = 0x00400000
} FILETYPEATTRIBUTEFLAGS;

Константы

 
FTA_None
Значение: 0x00000000
Параметры FILETYPEATTRIBUTEFLAGS не заданы .
FTA_Exclude
Значение: 0x00000001
Исключает тип файла.
FTA_Show
Значение: 0x00000002
Показывает типы файлов, например папки, которые не связаны с расширением имени файла.
FTA_HasExtension
Значение: 0x00000004
Указывает, что тип файла имеет расширение имени файла.
FTA_NoEdit
Значение: 0x00000008
Запрещает редактирование записей реестра, связанных с этим типом файлов, добавление новых записей, а также удаление или изменение существующих записей.
FTA_NoRemove
Значение: 0x00000010
Запрещает удаление записей реестра, связанных с этим типом файлов.
FTA_NoNewVerb
Значение: 0x00000020
Запрещает добавление новых глаголов в тип файла.
FTA_NoEditVerb
Значение: 0x00000040
Запрещает изменение или удаление канонических глаголов, таких как open и print.
FTA_NoRemoveVerb
Значение: 0x00000080
Запрещает удаление канонических глаголов, таких как open и print.
FTA_NoEditDesc
Значение: 0x00000100
Запрещает изменение или удаление описания типа файла.
FTA_NoEditIcon
Значение: 0x00000200
Запрещает изменение или удаление значка , назначенного типу файла.
FTA_NoEditDflt
Значение: 0x00000400
Запрещает изменение команды по умолчанию.
FTA_NoEditVerbCmd
Значение: 0x00000800
Запрещает изменение команд, связанных с командами.
FTA_NoEditVerbExe
Значение: 0x00001000
Запрещает изменение или удаление глаголов.
FTA_NoDDE
Значение: 0x00002000
Запрещает изменение или удаление записей, связанных с DDE.
FTA_NoEditMIME
Значение: 0x00008000
Запрещает изменение или удаление типов контента и записей расширения по умолчанию.
FTA_OpenIsSafe
Значение: 0x00010000
Указывает, что открытая команда типа файла может быть безопасно вызвана для скачанных файлов. Этот флаг применяется только к безопасным типам файлов, как определено AssocIsDangerous. Чтобы улучшить взаимодействие с пользователем и уменьшить количество ненужных запросов пользователей при скачивании и активации элементов, владельцы типов файлов должны указать этот флаг, а приложения, которые скачивают и активируют файлы, должны соблюдать этот флаг.
FTA_AlwaysUnsafe
Значение: 0x00020000
Не позволяет включить поле Никогда не спрашивать проверка. Использование этого флага означает , что FTA_OpenIsSafe не соблюдается, и AssocIsDangerous всегда возвращает значение TRUE.
Если тип файла может выполнять код, следует всегда использовать этот флаг или убедиться, что обработчики типов файлов снижают риски, например, создавая предупреждения перед выполнением кода.

Пользователь может переопределить этот атрибут с помощью диалогового окна Тип файла .
FTA_NoRecentDocs
Значение: 0x00100000
Запрещает добавление элементов этого типа файлов в папку Последние документы . Кроме того, в Windows 7 и более поздних версиях запрещает добавление элементов этого типа файлов в категорию " Последние" или "Часто " списка переходов приложения.

Этот флаг не ограничивает добавление элементов этого типа файлов в пользовательский список переходов. Он также не накладывает ограничений на тип файла, добавляемый в автоматический переход Списки других приложений в случае, если другие приложения используют этот тип файлов.
FTA_SafeForElevation
Значение: 0x00200000
Представлено в Windows 8. Помечает файл или схему URI как безопасную для использования из приложения с низким уровнем доверия. Примеры файлов, поступающих из Интернета или контейнера приложений, являются примерами, в которых файл считается недоверенным. Ненадежные файлы, содержащие код, особенно опасны, и необходимо применить соответствующие меры безопасности, если файл должен быть открыт приложением с полным доверием. Владельцы типов файлов для форматов файлов, которые могут выполнять код, должны указывать этот флаг только в том случае, если их программа устраняет угрозы повышения привилегий, связанные с выполнением кода на более высоком уровне целостности. К устранению рисков относится запрос пользователя перед выполнением кода или выполнение кода с ограниченными привилегиями.

Указав этот флаг для всего типа файла, приложение, работающее в контейнере приложения, может передавать файлы этого типа программе, работающей с полным доверием. Некоторые типы файлов распознаются как опасные по своей природе из-за возможности выполнения кода и будут заблокированы, если не указать это значение.
FTA_AlwaysUseDirectInvoke
Значение: 0x00400000
Представлено в Windows 8. Гарантирует, что команды для типа файла вызываются с помощью URI, а не скачаемой версии файла. Используйте этот флаг, только если вы зарегистрировали команду типа файла для поддержки DirectInvoke с помощью регистрации SupportedProtocols или UseUrl.

Комментарии

Эти флаги представляют возможные атрибуты, хранящиеся в значении EditFlags регистрации ProgID. Данные EditFlags являются одним REG_DWORD.

В следующем примере показаны атрибуты FTA_NoRemove (0x00000010) и FTA_NoNewVerb (0x00000020), назначенные типу файла MYP.

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   MyProgram.1
      (Default) = MyProgram Application
      EditFlags = 0x00000030
\

Такие API, как IQueryAssociations::GetData , могут извлекать эти данные EditFlags. Сравните числовые эквиваленты этих флагов FILETYPEATTRIBUTEFLAGS с извлеченным значением, чтобы определить, какие флаги заданы.

В следующем примере показано использование IQueryAssociations::GetData для определения того, заданы ли эти значения.

IQueryAssociations *passoc;

HRESULT hr = AssocCreate(CLSID_QueryAssociations, IID_PPV_ARGS(&passoc));
if (SUCCEEDED(hr))
{
    hr = passoc->Init(NULL, pszType, NULL, NULL);
    if (SUCCEEDED(hr))
    {
        DWORD dwEditFlags;
        ULONG cb = sizeof(dwEditFlags);
        
        hr = passoc->GetData(NULL, ASSOCDATA_EDITFLAGS, NULL, &dwEditFlags, &cb);
        if (SUCCEEDED(hr))
        {
            if (dwEditFlags & 0x00000010) // FTA_NoRemove
            {
                // ...
            }    
            if (dwEditFlags & 0x00000020)  // FTA_NoNewVerb
            {
                // ...
            }
        }
    }
    passoc->Release();
}

Чтобы задать атрибут EditFlags, можно использовать функции RegSetValueEx или SHSetValue . Сначала используйте IQueryAssociations::GetData , чтобы получить текущий набор атрибутов, как показано в приведенном выше примере, добавьте к этому значению нужное значение FILETYPEATTRIBUTEFLAGS , а затем запишите это значение обратно в реестр с помощью одной из двух функций set.

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 2000 Professional, Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть shlwapi.h