FILETYPEATTRIBUTEFLAGS 列舉 (shlwapi.h)

指出檔案關聯 PROGID 登錄機碼之 EditFlags 值中使用的 FILETYPEATTRIBUTKEYAGS 常數。

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;

常數

 
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 和更新版本中,禁止將此檔案類型的成員新增至應用程式的 [跳躍清單] 自動 [ 最近 ] 或 [ 經常] 類別。

此旗標不會限制此文件類型的成員加入 自定義跳躍清單。 如果其他應用程式使用此檔案類型,它也不會限制要新增至其他應用程式的自動 Jump 清單。
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 來擷取上述範例所示的目前屬性集,然後將所需的 FILETYPEATTRIBUT為 該值新增至該值,然後使用這兩個集合函式的其中一個將該值寫回登錄。

規格需求

需求
最低支援的用戶端 Windows XP、Windows 2000 Professional、Windows Vista [僅限桌面應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 shlwapi.h