【悲報】DSOFile、公式ではほぼ語られなくなる

# 2023/04ごろ
2023/04/19 En-UsのAnswers.Microsoft.comに次のような投稿がされた。
[How to download the DSOfile.dll](https://learn.microsoft.com/en-us/answers/questions/1246057/how-to-download-the-dsofile-dll)

> How to download the DSOfile.dll

いや、これ１行だけなんです。

ずれた回答が多いのだが、
https://web.archive.org/web/20170222195459/http://www.microsoft.com/en-us/download/details.aspx?id=8422

# 64bitはVBSを使用することで回避
https://qiita.com/Q11Q/items/f7c2721cec62c89bd816

# ブログ自体は残っているのだが。。。
https://devblogs.microsoft.com/scripting/how-can-i-get-a-list-of-available-metadata-for-microsoft-office-documents/
https://learn.microsoft.com/en-us/previous-versions/tn-archive/ee692828(v=technet.10)?redirectedfrom=MSDN#EFAA

# 失われたマイクロソフトのユルさ

>Dsofile: 語られざる物語

> 私たちが最初に『Tales from the Script』を書き始めたとき、私たちは自分たちが脚本界の悪者をかき集める厳しいジャーナリストになることを思い描いていました。  Tales from the Script は、その日のトップのスクリプト ストーリーを速報することになると、他の人たちをスクープし、Microsoft Scripting Guys だけが提供できる舞台裏の詳細なレポートで読者を魅了しました。  実際、私たちの最大の懸念は、ピューリッツァー賞委員会にどのように丁寧に伝えるかということでした。「皆さん、感謝していますが、私たちは毎年受賞しています。  気分転換のために、これを他の人にあげたほうがいいかもしれません。  ニューヨーク市には新聞はありませんか?  もしかしたらそれを彼らにあげてもいいかもしれない。」

> 結局のところ、物事は私たちが計画したとおりには進みませんでした。  私たちが Tales from the Script に失望しているわけではありません。  私たちの小さなコラムは、多くの人がスクリプトに対する最初の恐怖を克服するのに役立ち、スクリプトを使用して Windows を管理することは、GUI ツールを使用して Windows を管理するよりも難しくない (そして多くの場合簡単である) ことを理解するのに役立ったと思います。  私たちはそれをとても嬉しく思います。  それでも、ニューヨーク タイムズの編集委員がテーブルを囲んで「また Scripting Guys にスクープされました!」と話しているのを見るのは素晴らしいことでしょう。  私たちは彼らと競争することはできません！」  しかし今のところ、タイムズ紙は私たちのことをあまり心配していないようだ。

> 告白。  OK、おそらくこれの一部は私たちのせいです。  結局のところ、私たちの最近のコラムの 1 つは、「私はビッグフットと結婚しました」というタイトルでした。  それは正確には「ピューリッツァー賞受賞者」を叫ぶものではありません。

> しかし、今月は状況が異なります。  脚本の「March Tales」はビッグフットとの結婚とは何の関係もありません。  その代わりに、他のどこでも (Google 検索などをしない限り) 見つけることのできない、真実の最新ニュースをお届けします。  そうです、今月は Dsofile: The Untold Story をお届けします。

> あなたが今聞いたその苦しみの叫びは？  おそらくニューヨーク・タイムズ編集委員会の誰かだろう。  それか、Scripting Guy の Peter Costantini は、彼のお気に入りの種類のビスコッティがマイクロソフトのカフェテリアでもう入手できないことに気づきました。

>Dsofileとは何ですか?

> Dsofile は、実際には、Microsoft Developer Support OLE File Property Reader 2.0 サンプルのファイル名 (Dsofile.dll) です。 (Microsoft には非常にキャッチーな名前を考える才能があることは認めざるを得ません。) ただし、名前に惑わされないでください。 Dsofile (Microsoft ダウンロード センターから無料で入手できます) は、実際、スクリプト作成者にとって非常に便利なツールです。これは、すべてのファイルの概要情報プロパティ セットの読み取りと書き込みを迅速かつ簡単に行う方法を提供します。

> これに対するあなたの最初の反応はおそらく次のとおりでしょう。なぜこのことをずっと前に私たちに教えてくれなかったのですか!?」おそらく 2 番目の反応は、「えーっと、概要情報のプロパティって何ですか?」ということでしょう。 「（Office）ファイルに設定された概要情報プロパティ」の意味がわからない場合は、次のようにしてください。 Windows エクスプローラーまたはマイ コンピューターを開いてファイルを見つけます。 (どのファイルでも構いませんが、Microsoft Office ドキュメントをお勧めしますが、その理由は 1 ～ 2 分で明らかになるでしょう)。ファイルを右クリックし、「プロパティ」をクリックします。表示されるダイアログ ボックスで、[情報] タブをクリックします。次のような内容が表示されるはずです (このように見えない場合は、「詳細設定」ボタンをクリックしてください)。
![ee692828.sg020501(en-us,technet.10).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/7198b41b-1247-5ace-62a9-8eff778c3308.jpeg)

> これは概要情報であり、ご覧のとおり、ファイルに非常に有用なメタデータが多数追加される可能性があります。  さらに重要なのは、そのメタデータを利用できるようになるということです。  たとえば、件名、カテゴリ、キーワードなどを熱心に入力すると、細かくターゲットを絞った検索を実行できるため、ファイルをすばやく簡単に見つけることができます。  以下に示すように、Microsoft Office 内のファイル検索コマンドを使用すると、これらの概要情報プロパティに基づいてドキュメントを検索できます。  同様に、新しい MSN 検索ツールでも、これらのプロパティに基づいてドキュメントを検索できます。
![ee692828.sg020502(en-us,technet.10).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/00c5b3d8-74a8-860d-49ee-cad02001f15b.jpeg)

> 実を言うと、これはまさに脚本家が手に入れたい種類の情報です。  私たちは、概要情報にアクセスするスクリプトをどのように作成できるか、またこの概要情報を構成するスクリプトをどのように作成できるかを尋ねる人々から多くの手紙を受け取ります。  しかし、オペレーティング システムに組み込まれているスクリプト ツールでは実際にはこれを行うことができません。  確かに、Shell オブジェクトには、これらの概要情報フィールドの一部を読み取る機能があります。  ただし、Shell オブジェクトは概要情報フィールドに書き込むことができません。  さらに言えば、Windows スクリプト ホスト、ファイル システム オブジェクト、WMI、またはオペレーティング システムに組み込まれているその他のものも使用できません。  世の中には良いものがたくさんありますが、そこに到達する方法はないようです。

> ここで Dsofile が活躍します。  Dsofile は、スクリプト作成者がファイルの概要情報プロパティを取得する方法を提供するように設計されています。  Dsofile には一連のプロパティが組み込まれています。  これらのプロパティは、Microsoft Office ドキュメントに標準で付属しているプロパティと同じです。  (それほど驚くべきことではありません。結局のところ、Dsofile は Office チームによって開発されました)。  Dsofile を使用すると、ドキュメントにバインドし、次の項目の情報を取得できます。

表は省略

> すでに述べたように、これらは Microsoft Office ドキュメントに含まれるプロパティです。ただし、Office ドキュメントから情報を取得することに限定されません。 Dsofile を使用して他の種類のファイルにバインドすることもできます。たとえば、.vbs ファイルや .mp3 ファイルなどにバインドできます。唯一の注意点は、Dsofile は上記にリストされているもの以外のプロパティを取得できないことです。たとえば、.jpg ファイルには、幅、高さ、ビット深度などのプロパティがあります。便利なプロパティですが、Dsofile を使用してこれらのプロパティにアクセスすることはできません。


ちょっと待ってください: Dsofile は新しいものではありません
> 懐疑的な人の中にはこう言う人もいるかもしれません。  これは古いニュースです。  Dsofile は何年も前から存在していました。」  それは本当です。Dsofile は何年も前からリリースされているだけでなく、スクリプト センターにはこのユーティリティの使用方法を示すサンプル スクリプトもいくつかあります。
　しかし、Dsofile の新しいバージョンは 12 月初旬に鳴り物入りでリリースされました。  それがこのコラムの理由であり、最新ニュースをお届けするという私たちの主張でもあります。  (2 か月後も最新版としてカウントされると仮定します。) 質問する前に、この新しいバージョンの Dsofile は .NET プログラミング言語で使用するように設計されており、私たちが知る限り、以前のバージョンでは見つからない機能は追加されていません。

>  2つの違いは、Dsofile の機能を利用するスクリプトです。  古いバージョンの Dsofile があり、新しいバージョンをダウンロードしてインストールするとします。  古い Dsofile スクリプト (スクリプト センターにあるものと同じもの) は、新しいバージョンの Dsofile では動作しません。  これは、古いバージョンを使用するために必要なスクリプト コードと、新しいバージョンを使用するために必要なスクリプト コードに多くの変更が加えられたためです。



 たとえば、古いバージョンの Dsofile を使用してドキュメントの作成者の名前を取得するスクリプトを次に示します。
```
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties _
    ("C:\Scripts\New_users.xls")
Wscript.Echo "Author: " & objDocument.Author


Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open("C:\Scripts\New_users.xls")
Wscript.Echo "Author: " & objFile.SummaryProperties.Author
```
そして、これは、Dsofile の新しいバージョンで動作するように書き直された同じスクリプトです。
```vb
Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open("C:\Scripts\New_users.xls")
Wscript.Echo "Author: " & objFile.SummaryProperties.Author
```

> ご覧のとおり、どちらのスクリプトもドキュメントの作成者を返しますが、類似点はそれだけです。  ProgId (DSOleFile.PropertyReader と DSOFile.OleDocumentProperties) さえ異なります。  残念ながら、Dsofile とともにリリースされた最小限のドキュメントでは、そのことが明確になっていません。  注意しないと、少なくとも 1 人の Scripting Guy のように、新しいバージョンをインストールし、古いスクリプトが動作しなくなった理由を解明するのに何時間も費やすことになるかもしれません。

> 本当に懐疑的な人はこう思っているかもしれません。  Office アプリケーションのインスタンスを作成して、同じ情報を取得することはできないでしょうか?」  はい、できます。  ただし、Dsofile を使用する価値は、Microsoft Office などの他のアプリケーションでは取得できない固有の情報を取得できることにありません。  代わりに、Dsofile の価値は、この 1 つのことだけを実行するという事実です。  Dsofile を使用するスクリプトは、Microsoft Office を使用するスクリプトよりも速く情報を返します。  文書の作成者を特定するためだけに Word や Excel のインスタンスを作成する必要がないからです。  Dsofile を使用すると、Office アプリケーションを起動するオーバーヘッドなしで、同じ情報をより迅速かつ簡単に取得できます。  それが Dsofile が非常に便利なツールである理由です。

以下スクリプトの説明なので省略。

>ピューリッツァー賞委員会に感謝したいと思います…
 …しかし、そうするつもりはありません。  それは、彼らがまだ実際にピューリッツァー賞を授与していないからです。  ただし、Dsofile が役立つことを願っています。  私たちがやろうとしていることの 1 つは、スクリプト作成の視野を少し広げることです。  覚えているかもしれませんが、先月、オペレーティング システムには付属していませんが、スクリプト作成者にとって非常に役立つ別のツールである Log Parser を紹介しました。  Dsofile を試してみて、ご意見をお聞かせください (いつものように、scripter microsoft.com まで (可能であれば英語で) ご連絡ください)。

> 役に立つと思ったら、次回ピューリッツァー賞委員会のメンバーと話すときに Scripting Guys について言及してみてもよいでしょう。  ねえ、私たちは愚かにもみんなで急いで買ったこのタキシードを何とかしなければなりません。


このユーモア、ジョーク、コードの改善、すべて今のマイクロソフトには存在しない。
こんな自由な空気は失われてしまった。
鬱鬱しくややこしく、二言目にはセキュリティや監査ばっかり。監獄にでもいるようなものだ。
こんなんでDXとか言い出すの、マジで悪い冗談だろう。
この時代とは違う。
いまの翻訳ソフトはだいぶいい。こんな感じの楽し気な空気がよく出ている。今だと最後はいいねと高評価をお願いしますとか言いそうだ。

# 補足
このアドバンスドファイルサーチはSharepoint2010まではあった
[高度な検索を使用してコンテンツを検索する](https://support.microsoft.com/ja-jp/office/find-content-by-using-advanced-search-2979bb4d-56e9-4ccd-8316-472eba777349)
![9bc3526b-ce14-4887-80eb-56f1296a65ba.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/ec009a82-a194-5eab-5158-092e00562025.png)
https://learn.microsoft.com/ja-jp/previous-versions/office/developer/sharepoint-2010/ff394509(v=office.14)
しかし、このファイルの情報（プロパティ）は一般的には使われず、削除の対象となっているので、あまり役立たない。
またDSOFileを使っても、暗号化やパスワードがかかっている場合も無理である。
また、64bitでは素直に使用できない。

もちろん、最終更新日、と最終印刷日という重要な情報を取得できるので、DSOfileは依然として極めて重要なツールだ。これらはファイルの同定に極めて役立つ。