Outlook 顯然在某處有一個設置,用於控制是否可以直接打開給定文件類型的電子郵件附件,或者用戶是否必須通過「您應該只打開來自可信任來源的附件」對話框。此對話方塊中的選項之一是「開啟此類檔案之前始終詢問」。
若要取消選取「始終詢問」設置,您必須關閉 Outlook,以管理員身分重新打開,然後嘗試開啟要變更此設定的每種檔案類型,然後取消設定「始終詢問」...然後關閉Outlook 並以普通使用者身分重新開啟。我正在嘗試找到一種方法來自動執行此過程,但我似乎無法弄清楚此設定的儲存位置。我假設它被埋在註冊表中的某個地方,但 Outlook 也有儲存大量內容的習慣(咳嗽自動完成列表咳嗽)在隨機資料庫檔案中。
有誰知道 Outlook 在哪裡/如何儲存附件文件類型的「安全狀態」?
答案1
從技術上講,在取消選取信任中心(來自 Excel 或 Word)下的「啟用 Outlook 附件的受保護檢視」後,Outlook 中會出現此提示。請記住,Outlook 信任中心不會顯示此選項來停用/啟用受保護的視圖設置,您必須前往相關的 Office 套件程式。如果啟用此設置,您將不會收到提示,但現在將在您開啟 Excel/Word 時出現受保護視圖設定警報。我最終做了由 Roady 在 MS 論壇上提供的修復:右鍵單擊 Outlook 快捷方式並以管理員身份運行它,然後在打開附件時按 Ctrl + Shift,這將允許您取消選中“始終詢問之前”框打開這種類型的文件」。
答案2
在我提出這個問題的第二天,亞當·福勒 (Adam Fowler) 發表了這篇博文,具有深不可測的諷刺意味: https://www.adamfowlerit.com/2017/09/disabling-outlook-opening-mail-attachment-prompt/。
總結一下(萬一他的貼文有一天消失了):
在註冊表中,該分支下的每個「受信任」文件類型都有一個類別:HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes
例如,Excel 文件可能是HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes\Excel.Sheet.8
或(對於較新版本的 Excel...)HKLM\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes\Excel.Sheet.12
設定/新增EditFlags
十六進位值的金鑰00,00,01,00
將刪除「始終在...之前詢問」彈出視窗並允許僅開啟檔案。
因此,如果您想要允許開啟 Visio 檔案版本 15,您需要新增/編輯如下所示的登錄項目:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes\Visio.Drawing.15]
"EditFlags"=hex:00,00,01,00
Adam 貼文的真正見解是您可以使用普羅克蒙Process name contains outlook.exe
(來自 sysinternals)來解碼您感興趣的檔案類型Operation is SetRegValue
。這將向您顯示 Outlook 設定註冊表值的事件,更重要的是它是哪個值。文件類型到“類名”的映射是棘手的部分- 它是如何工作的並不總是那麼明顯,我認為每個應用程序都可以獲取其中的一些(在我的例子中,IrfanView 是一個與. gif 和 . jpg 副檔名)
接下來,以管理員身分開啟 Outlook,然後開啟您不想被打擾的每種檔案類型的範例。當您執行這些操作時,取消選取開啟對話方塊中的「始終詢問...」選項,當您開啟檔案時,對應的登錄項目將會被編輯。 Procmon 將向您顯示更改的確切條目,將它們保存到 .reg 檔案中以供以後使用,您可以立即重新設定它們。
就我而言,有足夠的例行重置,我敲出了一個小 python 腳本來生成 .reg 文件...只需添加/刪除您需要的任何葉子到列表中,您就可以開始了。
header_row = 'Windows Registry Editor Version 5.00'
reg_branch = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes'
leafs = [
'Excel.Sheet.12',
'Word.Document.12',
'PowerPoint.Show.12',
'Excel.Sheet.8',
'Word.Document.8',
'PowerPoint.Show.8',
'Visio.Drawing.15',
'IrfanView.png',
'IrfanView.gif',
'IrfanView.jpg',
]
key_name = '"EditFlags"'
key_value = 'hex:00,00,01,00'
print(f"{header_row}\n\n")
for leaf in leafs:
print(f"[{reg_branch}\{leaf}]")
print(f"{key_name}={key_value}\n")