本文章是由機器翻譯。

數位簽章

共通準則安全性之數位簽章作法的應用程式指南

Jack Davis

從手寫入簽章的紙張文件轉換為具有數位簽章的電子檔案移動快速的步調。若要滿足使用者需求和認證需求,具有數位簽章的電子文件需要提供相同的功能和以手動方式簽署紙張文件提供的安全性。本文將告訴您如何您,身為軟體開發人員可以只可以完成這個動作:有符合 ISO/IEC 15408 共通準則的安全性需求的內建的數位簽章功能的設計應用程式。

在文件和資料檔案的領域,數位簽章會提供兩個主要功能:

  • 識別文件或檔案內容的原始寄件者 (簽署者)
  • 驗證之後套用簽章,hasn’t 遭到變更帶正負號的資訊

超過 「 什麼您,請參閱 「 是什麼您簽署 」 (WYSIWYS) 的基本原則,您和使用者介面設計工具必須要注意的幾個額外的安全性和使用者考量,當建置支援數位簽章的應用程式。您也需要瞭解可能影響您在會議認證需求的產品的安全性問題。例如那些為了 ISO/IEC 15408 共通準則安全性的認證提供組織和使用者一個可靠方法來識別測試以符合使用性和安全性標準的產品。越來越,獨立的安全性憑證變得在購買決策的必要條件。

這篇文章年底您更加了解數位簽章與給使用者的清楚、 精確和開啟洩漏固有的需求的相關問題的範圍。

ISO/IEC 15408 常見準則安全性憑證

國際組織所支援的標準 (ISO) 和國際 Electrotechnical 委員會 (IEC),共通準則是一套設計用來評估和認證的安全性功能的資訊技術產品的方法論。通用準則安全性技術會發佈在 ISO/IEC 標準 15408 和 18045。

本文章的從發行物] 日期共通準則安全性標準被核准,26 國家採用。您可以找到共通準則成員的清單在 commoncriteriaportal.org/members.html。

辦公室開啟 XML 和開放封裝慣例

在 2008,ISO/IEC 核准,並採用 Office 開啟 XML (OOXML) 為開放的國際標準。開啟封裝慣例 (OPC) 元件的 OOXML 也會提供業界標準的容器檔案技術。OPC 結合使用 ZIP 和 XML 可以讓應用程式定義是開啟和容易存取的檔案格式。OPC 也定義功能來支援數位簽章、 中繼檔屬性和內容的關聯性。存取應用程式資料及 OPC 元素是透過一組公用 API 提供。

Microsoft Word (.docx)、 (.xlsx) Excel 及 PowerPoint (版的.pptx) 以及 XML 紙張規格 (.xps) OPC 檔格式的範例,每一個採用了它自己獨特內容組織 (結構描述) 與特定的應用程式相關聯的。每個 OPC 檔案格式也可以定義為數位簽章它自己簽署原則。簽章原則的檔案格式指定項目必須加以簽章,何種內容什麼項目可選擇性地簽署和什麼項目 shouldn’t 被簽名做為數位簽章簽署或驗證程序的一部分。

此文件中您進一步了解如何驗證,並顯示與數位簽章的電子文件一起儲存的簽章資訊。這些設計考量為基礎的 ISO/IEC 29500 和 ECMA 376 Office Open XML 標準 OPC 元件所提供的數位簽章功能。請記住,數位簽章簽署特定 OPC 為主的檔案格式的原則可能會採用只本文所述之簽章選項的子集。

數位簽章

例如那些 OOXML,所述的 OPC 檔案格式使用的 X.509 憑證和 XML 數位簽章 (W3C 2008) 技術,以提供的安全性的兩個項目:

  • 識別否認性安全地識別個別或群組來自簽章。
  • 內容驗證安全地確保帶正負號的所有內容存在,而且已簽署後,以任何方式 hasn’t 修改。

數位簽章的任何部分,或由簽章簽署任何內容的變更將會偵測到簽章驗證期間,且透過簽章是中斷錯誤訊息,通知使用者。

某些在本文中,數字是範例通知或使用者的狀態訊息。是否他們確認成功或失敗的簽章驗證] 或 [醒目提示使用者應該要注意的特殊功能,它們代表清楚且特定用語應該使用哪種。您的應用程式定義何時及何處使用者會看到這些數位簽章的狀態訊息。數位簽章驗證有時排定每當帶正負號的文件開啟時自動執行。在這種情況下,使用者開啟文件時,會顯示訊息。如果使用者需要執行以手動方式透過功能表選取數位簽章驗證,您可能要呈現 [快顯對話方塊中的 [簽章] 狀態。您和您的使用者介面設計工具有一些之執行時間和這些使用者的郵件的位置中 — 只要記住,讓它們以直覺和簡單盡可能瞭解。

簽署類別

取得您的應用程式來驗證簽章和簽署的內容的完整性為只有第一個步驟中撰寫數位安全的程式時報告成功或失敗。您也需要考慮各種類型的應用程式會遇到的內容。

最簡單形式的簽章,稱為完整簽章使用者套他或她的簽章在單一文件中的所有內容。數位簽章和簽署的內容會稍後驗證,然後再報告為有效或無效。圖 1 是數位簽章狀態訊息使用者類的範例就會看到。

圖 1 綜合的範例使用者郵件簽章

四個額外的類別中的文件項目也必須被視為為避免混淆或而誤用信任的假設:

  • 不帶正負號的內容
  • 帶正負號的內容群組
  • 從外部參考的內容
  • 動態內容

完整簽章

大多數的人都非常熟悉簽署紙張文件和合約。個人初期的每個頁面或將自己識別和認可他們檢閱、 核准及接受文件結尾處的符號。

如前所述,最簡單且最直接了當簽章數位文件中的案例是完整簽署。若要被歸類為這種類型的簽章,與文件檔案相關聯的所有內容必須都符合下列的四個準則:

  • 所有的內容項目位於單一文件套件中。
  • 所有的內容項目是靜態的。
  • 沒有連結或外部內容的參考。
  • 帶正負號的文件套件中的所有內容項目。

在文件是完全靜態內容的項目 can’t 包含任何動態 alterable 的項目,例如透過巨集建立或從外部來源中輸入文字。當登靜態文件檔案中的所有內容項目時,數位簽章,並已簽署的內容可以驗證使用摘要結果報告的簽章和相關聯帶正負號的內容當作有效或無效。

圖 2,在簽章 1 簽署文件部分 rt 。簽章上執行的更新版本驗證會確認簽章 1 仍保持不變而且有效,並每個與其相關聯簽署組件 ( rt ) hasn’t 被更改之後正要簽名。


圖 2 單一簽章簽署內容

圖 3 說明了一種變化在簽章,套用到一個文件的兩個或多個簽章。多個簽章通常發生在檢閱及核准週期的需要來指示他們核准和文件的檢閱它之後的接受度的個人。此表單中每個簽章可以驗證獨立連同相關聯的已簽署文件部分。


圖 3 多重簽章簽署內容

您可以使用下列方法和屬性,來驗證簽章並識別簽章和帶正負號的內容驗證案例中的每個簽署者。

不帶正負號的內容

不帶正負號的內容會造成隱含的信任關聯的潛在的危險。正負號或將自己識別和認可其檢閱和核准的初始頁面,請與紙張文件人常。任何頁面左邊不帶正負號的 (或新增稍後為不帶正負號的頁面) 有沒有正式的關聯或法律粗細與簽署者。

在數位文件中驗證數位簽章和其相關的內容會驗證使用者可以信任簽名碼和相關聯的已簽署的內容。不幸的是,許多 nontechnical 使用者 don’t 有區別數位簽章、 簽署的內容、 不帶正負號的內容與容器文件元件封裝專業知識。如果只顯示正值驗證的數位簽章,並已簽署的內容,使用者可能不正確地假設,驗證延伸到整個封裝可能包括不帶正負號 shouldn’t 不受信任的簽章相關聯的內容。不帶正負號的內容有沒有可辨識的來源,且可新增其他元件是帶正負號或修改文件套件內之後。

簽章信任關聯必須清除所有使用者。使用者應該進行知道的不帶正負號的內容,包括任何封裝內,並提供方法來清楚地分辨與信任簽署的內容。圖 4 顯示來警示到有效的數位簽章文件中的不帶正負號內容應該接收訊息的使用者種。

圖 4不帶正負號的內容的範例使用者訊息

圖 5,文件部分 mn 帶正負號,並可以使用簽章 1 來驗證。相同的文件套件也包含不帶正負號的部分 xy can’t 驗證。部分 xy 是獨立且不,甚至隱含與簽章 1 產生關聯。


圖 5 簽署這包含未簽署的組件的文件

您可以使用下列的屬性、 方法和虛擬程式碼來識別包含不帶正負號的組件套件:

下列虛擬程式碼會判斷是否 aren’t 簽署文件套件中的任何部分:

PackageDigitalSignatureManager dsm = new PackageDigitalSignatureManager(package);
PackagePartCollection partCollection = Package.GetParts();
foreach (PackagePart part in partCollection)
    foreach (PackageDigitalSignature signature in dsm.Signatures)
    {
        // Search if "part" is included in signature.SignedParts.
        // If "part" is included in signature.SignedParts
        //     then it is a signed part
        //     else it is an unsigned part
    }

帶正負號的內容群組

文件與多個簽章的內容群組是隱含信任由關聯的另一個風險。紙張文件與一個人可以簽署一節中的頁面,以及第二個人可以簽章不同節中的頁面。簽章和頁面第一個個別的跡象有與此網頁沒有正式關聯第二個個別的跡象。同樣,簽章和第二個個別的正負號的網頁有與此網頁沒有正式關聯第一個個別的跡象。只有網頁 cosigned 由兩個人代表接合的關聯。帶正負號的內容群組的範例是一份文件,在其中本文撰寫及由一個人簽署及附錄區段已加入的參考所寫入與其他人所簽章。

部份的檔案格式不同的內容元素可能由不同的個人進行簽署。使用者必須知道時簽章關聯到不同的內容群組它們是彼此獨立的和每個簽章和內容群組必須加以驗證分開。圖 6 顯示可能伴隨著帶正負號的內容群組包含的文件的使用者訊息。

圖 6 的 簽名內容群組的範例使用者訊息

圖 7 、 文件部分 rt 會簽署使用簽章 1 和文件部分 xy 驗證和 z 會簽署及驗證簽章 2。兩個簽章與它們相關的內容群組是獨立和與彼此甚至相同文件中的包含但不相關聯。


圖 7 的 兩個簽名的群組

圖 7的一種變化,在 的 [圖 8] 說明 cosigned 具有兩個或多個簽章的一或多個文件部分的情況。雖然簽章 1 和簽章 2 聯合簽署一或多個一般郵件 (群組 C),簽章 1 以群組 A 和群組 B 與簽章 2 簽章關聯性仍然是獨立且未與其他關聯。在描述簽章資訊給使用者,您必須明確,並清楚地解釋簽章關聯的獨立和聯合帶正負號的內容。


圖 8 簽署和 Cosigned 群組

下列的屬性和虛擬程式碼識別的套件,包含多個簽章的內容群組:

下列虛擬程式碼建立封裝中包含帶正負號的內容群組的清單:

PackageDigitalSignatureManager dsm = 
   new PackageDigitalSignatureManager(package);
foreach (PackageDigitalSignature signature in dsm.Signatures)
{
    // Add to list(signature.SignaturePart, signature.Signer);
}
// Upon completion the list will contain one entry for each signature
// along with the X.509 certificate that identifies the signer.
// If the list contains more than one entry and different signers,
// the package contains multiple signed content groups.

保護對多個簽章的內容群組

多個簽章的內容群組增加一種檔案格式,假設它們會增加某人可能將欺騙簽署的內容加入至文件與建立誤導的關聯,以現有的簽名碼和內容的用意可能性簽署原則的複雜性。若要保護您的應用程式,對抗這項威脅的安全可要求使用者 ’s 簽章簽署封裝 ’s 簽章來源關係部份。(簽章來源關聯性一部分是以名稱 \package\services\digital-signatures\_rels\origin.psdor.rels 封裝中的特殊檔案)。 已簽署內容和簽章來源關聯性一部份時, 稍後再加入任何簽章將會修改造成原始簽章失敗,並且報告為無效封裝簽章原點 
relationships 部分。

從外部參考的內容

外部參考的內容是另一個潛在不適當的信任由關聯的案例。帶正負號的文件內的項目可以包含不同、 外部文件的參照。除非這些其他文件也都簽名,外部參考會被視為資訊性,並且擁有與帶正負號的文件沒有正式的關聯。

透過外部連結和參考文件套件之外存取的內容可以隨時變更。在理想的情況下,正要簽名內容 shouldn’t 包含任何連結或參考文件封裝外部的材料。使用者必須能夠清楚地辨識並瞭解簽署及驗證包括連結及參照到外部資料的內容可能涉及的情況。圖 9 是範例訊息,指出文件中的外部參考的內容。

圖 9從外部參考的內容的範例使用者訊息

當驗證已簽章包含外部資料的連結的內容時,請使用下列方針:

  • 警示的使用者可以存在的參考和外部資料的連結。通知應該釐清不帶正負號的且未與任何簽章或簽章信任關聯外部的材料。
  • 為使用者提供方法來清楚地分辨帶正負號靜態內容和不帶正負號外部材料。例如,正在驗證使用者,而只有內部連結至其他已簽章內容檢視簽署的內容應該會顯示 — 應隱藏外部連結與外部內容的參考。

圖 10,文件部分 rt 帶正負號,並可以使用簽章 1 來驗證。文件一部分 ,但是,包含組件 t 的內部帶正負號參考的連結和不帶正負號的內容 x 和內容 y 的兩個外部參考的連結。驗證及描述簽章資訊的使用者,您的應用程式應該明確,並清楚地告知使用者該連結 xy 時 會參考不帶正負號的內容 isn’t 簽章 1 相關聯,且與其他已驗證之內容元素 (部分 rt ) 無關。


圖 10 外部參考內容

用來識別參照外部內容的項目是特定的 OPC 檔案格式的結構描述而定。在本文隨附的材料,您可以找到方法、 屬性和您可用來識別外部的虛擬程式碼參考 Microsoft Office 檔案格式中的內容 (.docx) Word、 Excel (.xlsx) 和 PowerPoint (版的.pptx)。

動態內容

動態不帶正負號的內容也是潛在的不當信任由關聯的情況。動態 alterable 內容在紙張文件中有沒有比喻。變更或合法簽署後,對紙張文件所做的修改失效簽章。要謹記法律粗細,帶正負號的紙張文件的修改必須檢閱、 認可和由原始 signators 重新簽署。

從簽名信任觀點來看可以動態地新增、 移除或更改的內容是 unsignable 其本質。例如文字的函式和巨集],執行透過建立的動態內容可以違反 WYSIWYS 的基本原則。動態內容是常產生的函式變數,如 「 今天 ’s 日期 」 及 「 上次儲存的日期,」 公式,例如 Sum 參照欄位或其他內容的插入文字建立自訂巨集執行時。

執行自訂巨集的結果所建立的動態內容可以惡意地,使用,並提供安全性弱點。可執行的作業加入難清楚地了解使用者動態內容的複雜度。強制執行 WYSIWYS 原則,需要進行簽章的文件 shouldn’t 包含動態內容,並應該改用靜態內容。

牽涉到簽章與驗證包含動態內容的文件的情況下必須公開,清楚且準確呈現給使用者。當簽章包含動態內容的文件時無法避免時,遵循下列方針:

  • 動態內容存在的警示使用者。動態內容不帶正負號的且不相關的任何簽章,應該釐清通知,而且 can’t 是簽章信任任何層級相關聯。
  • 提供使用者具有方法,可以清楚地識別和區分簽署靜態內容,且不帶正負號的動態內容。比方說時驗證並檢視已簽章內容,動態內容應被隱藏 ; 簽署者應該會看到只最初顯示在靜態內容。

圖 11 顯示一則訊息,警告使用者以動態方式計算內容。

圖 11 的 動態內容的範例使用者訊息

圖 12,文件部分 r 帶正負號,並可以使用簽章 1 來驗證。不過,文件套件也包含動態內容,組件 z ,can’t 簽署或驗證的一。部分 z 是獨立且不,甚至隱含與簽章 1 產生關聯。


圖 12 的 動態內容

識別包含動態內容的項目是特定的 OPC 檔案格式的結構描述而定。在 線上材料 所附本文,您可以找到方法、 屬性和您可用來識別在 Microsoft Office 檔案格式中的動態內容 (.docx) Word、 Excel (.xlsx) 和 PowerPoint (版的.pptx) 的虛擬程式碼。

維護透明度

我再次說:在建置支援數位簽章的應用程式,您必須確定使用者被授予相同的功能和他們必須使用手寫入簽章的透明度。除了知道驗證簽章憑證 (X.509) 和簽署的內容 (密碼編譯雜湊) 的基本作業的您和您的使用者介面設計工具必須為戒慎守望,有任何可能 intuitively 清除以使用者的情況。

合併彙算,潛在的問題可能因下列禍首:

  • 目前狀態和識別不帶正負號的內容
  • 簽署人的多個內容群組之間的關聯
  • 存在和不帶正負號的外部參考材料的識別。
  • 存在和不帶正負號的動態內容的識別。

如果您 don’t 從您的應用程式排除這種類型的內容,經過設計規劃,必須公開,並準確地呈現給使用者。同樣地,清楚且精確洩漏數位簽章資訊是基本的使用者需求和 ISO/IEC 15408 共通準則安全憑證的需求。

在電子文件而移位,注重安全性的群組和個人會越來越依賴如 ISO/IEC 15408 共通準則的獨立認證。若要確保您的產品位於成功今天 ’s 市場中,請花一點時間撰寫符合使用者與安全性憑證標準的軟體應用程式。

如需詳細資訊和各種標準的連結,請參閱伴隨著這篇文章將 線上材料 。您也尋找如何識別的概觀動態並從外部參考 Microsoft Office 文件中的內容。

Jack Davis 是 Windows OPC 「 Packaging 」 小組的程式管理員。Davis 是先前參與者到 MSDN Magazine (「 OPC:一個新標準的封裝您資料 」 2007 年八月) 和在 blogs.msdn.com/opc Microsoft 封裝小組 ’s 網站上的部落格。他可以達到在 jack.davis@microsoft.com

在 「 應用程式指引的網頁內容

一般準則安全性的數位簽章作法 」

下列連結提供需要確保您的應用程式遵循已接受的作法,使用數位簽章的資訊。

網址可能變更,因此您可能無法連線到此處提及的網站。

識別在 Office 文件中的動態與外部參考內容

用來識別的動態內容或從外部參考的內容元素是特定 OPC 檔案格式的結構描述而定。本節提供如何識別動態的概觀,並從外部參考 Word (.docx)、 (.xlsx) Excel 及 PowerPoint (版的.pptx) 的 [Office Open XML (OOXML) 檔案格式中的內容。本概觀不 all-inclusive – 如需詳細資訊,請參照 ISO/IEC 29500-3 第 3 篇:標記相容性和 OOXML 檔案格式標準的擴充性。

Office 文件結構

OOXML 檔案格式的 Word、 Excel 及 PowerPoint 文件採用通用的結構,用來存放內容。

  • / [Content_Types].xml 檔案
  • /_rels/ 資料夾
  • /docProps/ 資料夾
  • /documentType/ 資料夾位置 /documentType/ 是 /:
    • /word/ 的 Word 文件 (.docx)
    • /xl/ Excel 文件 (.xlsx)
    • /ppt/ PowerPoint 文件 (版的.pptx)

[內容類型].xml 部分會包含所有在封裝中所含的組件的多用途網際網路郵件延伸標準 (MIME) 型別。兩個項目型別可以定義在標記中的內容類型:

  • 預設擴充項目定義預設副檔名為部分 (檔名) 和指定的 MIME 內容類型之間的關聯。舉例來說,
<Default Extension="png" ContentType="image/png" />
  • 覆寫 PartName 元素定義特定組件和指定的 MIME 內容類型的關聯。 舉例來說,
<Override PartName="/word/footnotes.xml"
           ContentType="application/vnd.openxmlformats-
                       officedocument.wordprocessingml.footnotes+xml" />

您也可以包含在 [內容類型].xml 部分中項目的使用 ContentType 屬性,識別儲存在封裝中的項目類型 (例如,Visual Basic 專案中的巨集所使用的檔案)。

OOXML 檔案格式標記的額外資訊,請參閱 ISO/IEC 29500 第 1 部份:基本原理,並標記語言參考。

Word 文件

欄位

Word 文件可以包含的欄位。 欄位可以定義各種物件,例如時間,日期,文件屬性連結,等等參考至外部內容,表單欄位。 以這種方式使用的欄位可提供動態內容。 有兩種類型的欄位:簡單和複雜。

下列虛擬程式碼 (p 程式碼) 會示範如何辨識簡單欄位項目。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<w:fldSimple *> * </w:fldSimple>’)
    then
       a simple-field exists

包含起始陳述式、 欄位的描述及結束的陳述式的倍數行說明複雜的欄位。 下列的 p-程式碼將示範如何識別複雜的欄位項目。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();   // Returns a Stream containing the part content
    if str contains (‘<w:fldChar fldCharType="begin" * />’)
    then
       a complex-field exists

巨集

巨集是可以提供動態內容的另一種機制。 巨集是以 Visual Basic 檔案儲存在 Word 文件。 使用巨集,文件的 Word 文件中 / [Content_Types].xml 檔案包含 Visual Basic 專案的 MIME 內容型別參考。 下列的 p-程式碼將示範如何識別使用巨集。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘*vbaProject’)
    then
       a macro exists

外部參考

Word 文件可以定義透過超連結]、 [子文件]、 [OLE 物件] 或 [郵件合併元素的使用外部參照。 下列的 p-程式碼會概述識別如果文件使用外部參照的一種方法。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘href’ or ‘Hyperlink’ or ‘External’)
    then
       an external reference exists

Excel 文件

計算欄位

Excel 文件中動態內容儲存在從函式計算其值的計算欄位中。 下列的 p-程式碼將示範如何識別導出資料格 Excel 文件中使用。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<f *> * </f>’)
    then
       a calculated field exists

日期和時間

日期和時間資訊,例如在頁首及頁尾,可定義成自動更新 (例如何時列印)。 動態在工作表描述檔案 \xl\worksheets\sheet X .xml, X 其中代表工作表數字中定義的日期和時間資訊。 表描述檔案可以包含標頭和頁尾 (headerFooter) 定義的項目相關聯的內容。 內容值 (& C,& D 和 T 服務為動態的日期和時間值的預留位置 (& I)。 內 XML 標記,& C 代表目前,& D 代表日期和 & T 代表時間。 &D 之前,一定會出現 C 和 & T,] 和 [它 ’s 越好] 來串連兩個它們建置類似的字串 (& C D 和 T (& I) 或 & C T & D (& I)。

巨集

類似於 Word 文件,巨集儲存在 Excel 文件中為 Visual Basic 檔案。 使用巨集的文件 / [Content_Types].xml 檔案會包含為 Visual Basic 專案的 MIME 內容型別參考。 以偵測使用巨集在 Excel 中 p 程式碼是類似於 Word 的。 您可以使用上的 「 Word 文件 」 一節 「 巨集 」 部分中 p-code 也偵測使用巨集在 Excel 中。

外部參考

在 Excel 中的外部參考都以相同的方式,在 Word 中實作。 請參閱進一步上用來識別在 Excel 中的外部參考的資訊上的 「 Word 文件 」 一節 「 外部參考 」 部份。

資料庫和外部資料來源的資料

Excel 此外允許動態地從資料庫和其他外部資料來源取得資料的文件。 外部資料來源是透過連線定義,以外部來源參考。 連線定義是在 /xl/connections.xml 一部分儲存在封裝中指定的。 以下是一些可能的資料來源連線類型:

  • ODBC 來源
  • DAO 來源
  • 檔案為基礎的來源
  • Web 查詢
  • OLE DB 為基礎的來源
  • 文字來源
  • ADO 資料錄集
  • 資料集提供者 (DSP)

如需關於資料來源的詳細資訊,請參閱 ISO/IEC 29500 1 基本原理和標記語言參考區段 12.3.4 連線組件。 下列的 p-程式碼示範如何辨識 Excel 文件中的外部資料連接。

Package pkg = Package.open(filepath);
PackagePart connPart= pkg.GetPart("/xl/connections.xml");
if connPart is not null   // file "/xl/connections.xml" exists
then
   an external data source exists

動態資料

Volatile 資料是一種額外的方法,來連接至外部資料來源的 Excel。 變動的相依性藉由透過實際-時間資料 (RTD) 支援的資料快取的方式來運作。 RTD 連線到使用安裝在本機機器上的 COM 物件,以提供想要的資料至 Excel 文件。 如需有關 Volatile 資料的額外資訊,請參閱 ISO/IEC 29500 1 基本原理和標記語言參考、 區段 18.15 動態相依性]。 下列的 p-程式碼示範如何辨識 RTD Excel 文件中的連線。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<volTypes *>’)
    then
       volatile data exists

PowerPoint 文件

日期和時間

動態的日期和時間項目,也可以包含內 PowerPoint 簡報的投影片。 動態的日期和時間資訊可以定義在每張投影片 ’s 描述檔案 \ppt\slides\slide X .xml, X 其中是投影片編號。 包含動態的日期和時間內容的投影片有日期項目,以設定值,日期時間為其型別屬性。 下列的 p-程式碼示範如何辨識的動態的日期和時間在 PowerPoint 文件中的項目存在。

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘datetime’)
    then
       a date-time element exists

巨集

類似於 Word 和 Excel 文件,巨集儲存在 PowerPoint 文件中為 Visual Basic 檔案。 使用巨集的文件 / [Content_Types].xml 檔案會包含為 Visual Basic 專案的 MIME 內容型別參考。 來偵測巨集使用 PowerPoint 中 p-code 是,一樣的 Word 和 Excel 文件。

外部參考

在 PowerPoint 中的外部參考實作和它們在 Word 和 Excel 中。