web-dev-qa-db-ja.com

新しいメタデータプロパティをファイルに追加する

一部のファイルにメタデータプロパティを追加したい。ドキュメントファイルの所有者、コンピューター、タイトル、件名などがあるように、カスタム属性をいくつか追加できるようにしたいと思います。どうすればできますか?

14
user2399378

すでに述べたように、それはファイルシステムに依存します。したがって、これはNTFSでのみ機能します。

1つの方法はADSストリームを作成することです:編集履歴を参照してください。

もう1つの方法は、Officeファイルでのみ機能することを目的としたDSOFile-Libraryを使用することです。ただし、すべてのファイルで機能します。

最初に、ここでライブラリをダウンロードします(x64 + x86): [〜#〜] download [〜#〜]

重要: DSO OLE is 32bit DLLなので、コンパイルターゲットCPUをx86に設定した場合のみ機能します。それ以外の場合は、例外がスローされます。 利用可能な64ビットバージョンもあります: C#でカスタムファイルプロパティを読み取る方法

次に、プロジェクトのCOMへの参照を作成しますDLLソリューションを右クリック->参照の追加-> COMタブ->「DSO OLE Documentプロパティリーダーv2.1」)、名前空間を使用:

using DSOFile;

その後、独自の属性を作成できます。

まず、ファイルを開きます。

OleDocumentProperties myFile = new DSOFile.OleDocumentProperties();
myFile.Open(@"MYPATHHERE", false, DSOFile.dsoFileOpenOptions.dsoOptionDefault);

YourValueのオブジェクトを作成します:object yourValue = "Your Value";

次に、作成するプロパティのようなプロパティがすでにあるかどうかを確認します。

foreach (DSOFile.CustomProperty property in myFile.CustomProperties)
{
   if (property.Name == "Your Property Name"){
      //Property exists
      //End the task here (return;) oder edit the property
      property.set_Value(yourValue);
   }
}

次に、既存の属性を確認した後、属性を追加できます。

myFile.CustomProperties.Add("Your Property Name", ref yourValue);

タスクを完了するには、ファイルを保存して閉じます。

myFile.Save();
myFile.Close(true);

私のホームページのサンプルプロジェクト をダウンロードできます。

次に、エクスプローラーで属性を表示する部分に進みます。

そのためのシェル拡張を作成する必要があります。詳細については、 Codeprojectページ にアクセスしてください。

作成しました ここからダウンロードできます しかし、もう一度署名する必要があります(上記のページで「ハウツー」を探してください)。

.css/.js/.txt-fileを右クリックすると、次のようになります。 Shell extension with Sharpshell
または独自のプロパティタブを作成します。
CustomPropertiesTab
ここからサンプルをダウンロードできます: [〜#〜] download [〜#〜]

Dsofile.dllおよびその他のソースの詳細については、「 Microsoft Dsofile.dll 」を参照してください。

14
jAC