Officeのバージョン確認

解決


Iori  2025-03-19 00:38:08  No: 151879  IP: 192.*.*.*

Delphi5でOfficeのバージョンを確認できる方法を模索中です。
Officeのバージョンが365なら機能の制限をかけ、それ以外のバージョンのものは制限なく使えるといったプログラムを作成したいです。
レジストリからバージョン情報を取得できるかと考えていたのですが、Office365の場合のレジストリ値がOffice2016と変わらないことで判別も難しく。
どなたかバージョンを取得できる方法をご教授いただけませんでしょうか。
どうかよろしくお願いします。

編集 削除
vram  2025-03-19 02:11:55  No: 151880  IP: 192.*.*.*

Officeのバージョンが365ではなく、365はサブスクを指すものでバージョンとは別物では?
Officeの実行ファイルのバージョン情報を取得するか
フォルダ構成に違いがあるのかは不明です

> Delphi5で

WindowsXPまでは動いた気がしますが、今動きますかね?

編集 削除
Iori  2025-03-19 02:19:36  No: 151881  IP: 192.*.*.*

vram 様
返信ありがとうございます。
Office365がバージョンではなくサブスクであることを理解しました。
そのうえで、サブスクに加入しているかを判断することはできませんでしょうか。

ワケあって現在WindowsXPで作業しており、XP環境下でDelphi5を使っています。
だいぶ古いものなので今なら当たり前に使えていた関数などが使えず.....(;_;)

編集 削除
vram  2025-03-19 04:10:21  No: 151882  IP: 192.*.*.*

だいたい状況はわかりました

AIと実際に調べてみたところ3つほどあるようです

1.レジストリに「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun」があるか調べる
ある場合は 365の可能性が高いようです 100%ではない

2.上記と同様にインストールフォルダにClickToRunがあるようですが見つかりませんでした
ある場合は 365の可能性が高いようです 100%ではない

3.Microsof Office APIを使用する

http://mrxray.on.coocan.jp/Delphi/Others/A_Win32APIHelp02.htm

情報が少なすぎますが、これらで365かの判断が出来るかも知れません

編集 削除
AAAAA  2025-03-19 07:43:51  No: 151883  IP: 192.*.*.*

VBS上の
Application.Version
を使ってみるとか?

編集 削除
Iori  2025-03-20 23:41:31  No: 151885  IP: 192.*.*.*

vram 様、AAAAA 様

日を跨いでの返信すみません。また、確認ありがとうございます。
vram 様が回答されたように再度、レジストリから値を持って来る方法で試したところ365の判別がつきそうです。
以下のコードで試したところ、サブスク加入している場合は365の文字列を拾って来れました(拙いコードで恐縮です)。

const
    KEY_WOW64_64KEY=$0100;
    KEY_WOW64_32KEY=$0200;

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  sGetData: string;
begin
  //Reg := TRegistry.Create;
  Reg := TRegistry.Create(KEY_QUERY_VALUE or KEY_WOW64_32KEY);
  Reg.Access := KEY_READ or KEY_WOW64_64KEY;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('SOFTWARE\Microsoft\Office\ClickToRun\Configuration', False);
    sGetData := Reg.ReadString('ProductReleaseIds');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;

  showmessage(sGetData);
end;

32bitのプログラムを64bit環境で動かすと、[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node]にリダイレクトしてしまうようでしたが、[KEY_WOW64_64KEY]を使うことでリダイレクトされずにレジストリを参照することができました。
ご回答して下さりありがとうございました!

編集 削除
Iori  2025-03-20 23:42:36  No: 151886  IP: 192.*.*.*

解決しました

編集 削除