Перечисление 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
Запрещает изменение или удаление канонических глаголов, таких как открытие и печать.
FTA_NoRemoveVerb
Значение: 0x00000080
Запрещает удаление канонических глаголов, таких как открытие и печать.
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
Указывает, что команда open типа файла может быть безопасно вызвана для скачанных файлов. Этот флаг применяется только к безопасным типам файлов, определяемым 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 , а затем запишите это значение обратно в реестр с помощью одной из двух функций набора.

Требования

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