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