共用方式為


FILETYPEATTRIBUTEFLAGS 枚舉 (shlwapi.h)

表示 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
禁止修改或刪除像 openprint 這類典型動詞
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 及更新版本中,禁止將此檔案類型的成員加入應用程式跳轉清單的自動「 最近」「頻繁」 類別。

此旗標並未限制此檔案類型的成員被加入 自訂跳躍清單。 若其他應用程式使用該檔案類型,它也不會限制自動加入跳轉清單的檔案類型。
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 屬性,可以使用 RegSetValueExSHSetValue 函式。 首先使用 IQueryAssociations::GetData 取得上述範例所示的當前屬性集合,並在該值中加入所需的 FILETYPEATTRIBUTEFLAGS ,然後使用兩個集合函式中的一個將該值寫回登錄檔。

需求

Requirement 價值觀
最低支援的用戶端 Windows XP、Windows 2000 專業版、Windows Vista【僅限桌面應用程式】
支援的最低伺服器 Windows Server 2008 [僅限傳統型應用程式]
Header 什爾瓦皮.h