FILETYPEATTRIBUTEFLAGS 枚举 (shlwapi.h)

指示在文件关联 PROGID 注册表项的 EditFlags 值中使用的 FILETYPEATTRIBUTEFLAGS 常量。

语法

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
禁止删除规范谓词,例如 openprint
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 及更高版本中,禁止将此文件类型的成员添加到应用程序的跳转列表的自动 “最近” 或“ 频繁” 类别。

此标志不限制将此文件类型的成员添加到 自定义跳转列表。 如果其他应用程序使用此文件类型,则不会限制要添加到其他应用程序的自动跳转Lists的文件类型。
FTA_SafeForElevation
值: 0x00200000
在 Windows 8 中引入。 将文件或 URI 方案标记为可从低信任应用程序安全使用。 源自 Internet 或应用容器的文件是文件被视为不受信任的示例。 包含代码的不受信任文件尤其危险,如果文件要由完全信任应用程序打开,则必须应用适当的安全缓解措施。 能够执行代码的文件格式的文件类型所有者应仅当其程序缓解与在更高完整性级别运行代码相关的特权提升威胁时,才应指定此标志。 缓解措施包括在执行代码之前提示用户,或者以降低的权限执行代码。

通过为整个文件类型指定此标志,在应用容器中运行的应用可以将此类型的文件传递给以完全信任方式运行的程序。 某些文件类型由于能够执行代码而被识别为本质上很危险,如果未指定此值,则会被阻止。
FTA_AlwaysUseDirectInvoke
值: 0x00400000
在 Windows 8 中引入。 确保使用 URI 而不是文件的下载版本调用文件类型的谓词。 仅当已通过 SupportedProtocols 或 UseUrl 注册注册了文件类型的谓词以支持 DirectInvoke 时,才使用此标志。

注解

这些标志表示存储在 ProgID 注册的 EditFlags 值中的可能属性。 EditFlags 数据是单个REG_DWORD。

以下示例演示分配给 . myp 文件类型 的FTA_NoRemove (0x00000010) 和FTA_NoNewVerb (0x00000020) 属性。

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

IQueryAssociations::GetData 等 API 可以检索 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 属性,可以使用 RegSetValueExSHSetValue 函数。 首先使用 IQueryAssociations::GetData 检索当前属性集,如上例所示,将所需的 FILETYPEATTRIBUTEFLAGS 添加到该值,然后使用两个集合函数之一将该值写回注册表。

要求

要求
最低受支持的客户端 Windows XP、Windows 2000 Professional、Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 shlwapi.h