Поделиться через


Перечисление 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;

Constants

 
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
Указывает, что открытая команда типа файла может быть безопасно вызвана для скачанных файлов. Этот флаг применяется только к безопасным типам файлов, как определено 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 [только классические приложения]
Header shlwapi.h