表示 FILETYPEATTRIBUTEFLAG 是 檔案關聯 PROGID 登錄鍵 EditFlags 值中使用的常數。
語法
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 禁止修改或刪除像 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 呼叫,而非下載的檔案版本。 只有當你已透過 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 專業版、Windows Vista【僅限桌面應用程式】 |
| 支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
| Header | 什爾瓦皮.h |