指示在文件关联 PROGID 注册表项的 EditFlags 值中使用的 FILETYPEATTRIBUTEFLAGS 常量。
Syntax
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 方案标记为安全,以便从低信任应用程序使用。 源自 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 属性,可以使用 RegSetValueEx 或 SHSetValue 函数。 首先使用 IQueryAssociations::GetData 检索当前属性集,如上面的示例所示,将所需的 FILETYPEATTRIBUTEFLAGS 添加到该值,然后使用这两个集函数之一将该值写回注册表。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows XP、Windows 2000 Professional、Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| Header | shlwapi.h |