설치된 MS-Office 버전을 어떻게 감지합니까?
설치된 Office 버전을 감지하는 가장 좋은 방법이 무엇인지 아는 사람이 있습니까? 또한 여러 버전의 Office가 설치되어있는 경우 해당 버전이 무엇인지 알고 싶습니다. 보너스는 설치된 Excel의 특정 버전을 감지 할 수 있다는 것입니다.
설치된 Office 버전을 확인하는 한 가지 방법 InstallRoot
은 관심있는 Office 응용 프로그램의 레지스트리 키 를 확인하는 것 입니다.
예를 들어 Word 2007이 설치되어 있는지 확인하려면 다음 레지스트리 키가 있는지 확인해야합니다.
HKLM\Software\Microsoft\Office\12.0\Word\InstallRoot::Path
이 항목은 실행 파일의 경로를 포함합니다.
12.0 (Office 2007의 경우)을 해당 버전 번호로 바꿉니다.
Office 97-7.0 사무실 98-8.0 Office 2000-9.0 오피스 XP-10.0 Office 2003-11.0 Office 2007-12.0 Office 2010-14.0 (원문 그대로!) 사무실 2013-15.0 사무실 2016-16.0 Office 2019-16.0 (원문 그대로!)
다른 응용 프로그램에는 비슷한 키가 있습니다.
HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot::Path
HKLM\Software\Microsoft\Office\12.0\PowerPoint\InstallRoot::Path
또는 모든 애플리케이션의 공통 루트 경로를 확인할 수 있습니다.
HKLM\Software\Microsoft\Office\12.0\Common\InstallRoot::Path
특정 레지스트리 키를 사용하지 않는 또 다른 옵션 MSIEnumProducts
은 여기에 설명 된대로 API를 사용하여 MSI 데이터베이스를 쿼리하는 것 입니다.
제쳐두고, 다른 Office 버전의 병렬 설치는 Microsoft에서 공식적으로 지원하지 않습니다. 다소 작동하지만 원하지 않는 효과와 불일치를 얻을 수 있습니다.
업데이트 : Office 2019 및 Office 365
Office 2019부터 MSI 기반 설치는 더 이상 사용할 수 없으며 간편 실행은 지금 Office를 배포하는 유일한 방법입니다. 정기적으로 업데이트되는 Office 365에 대한 이러한 변경과 함께 Office의 주 / 부 버전 번호도 더 이상 업데이트되지 않습니다 (적어도 당분간). 즉, Office 2019의 경우에도 레지스트리 키에 사용 된 값과 Application.Version
(예 : Word)에서 반환 된 값 은 여전히 16.0
.
당분간 Office 2016과 Office 2019를 구분하는 문서화 된 방법은 없습니다. 단서는 winword.exe의 파일 버전 일 수 있습니다. 그러나이 버전은 패치 된 Office 2016 버전에서도 증가합니다 (아래 @antonio의 주석 참조).
Office 버전을 구분해야하는 경우 (예 : 특정 기능이 있는지 확인하거나 Office의 최소 버전이 설치되어 있는지 확인하기 위해) 주 Office 응용 프로그램 중 하나의 파일 버전을 확인하는 가장 좋은 방법은 다음과 같습니다.
// Using the file path to winword.exe
// Retrieve the path e.g. from the InstallRoot Registry key
var fileVersionInfo = FileVersionInfo.GetVersionInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE");
var version = new Version(fileVersionInfo.FileVersion);
// On a running instance using the `Process` class
var process = Process.GetProcessesByName("winword").First();
string fileVersionInfo = process.MainModule.FileVersionInfo.FileVersion;
var version = Version(fileVersionInfo);
Office 2019의 파일 버전은 16.0.10730.20102이므로 Office 2019 또는 현재 Office 365 버전을 처리하는 것보다 더 큰 것이 표시되는 경우.
HKEY_CLASSES_ROOT \ Word.Application \ CurVer는 어떻습니까?
64 비트 컴퓨터에 32 비트 Office를 설치 한 경우 "SOFTWARE \ Wow6432Node \ Microsoft \ Office \ 12.0 \"이 있는지 확인하고 12.0을 적절한 버전으로 대체해야 할 수 있습니다. 이것은 64 비트 Windows 7에 설치된 Office 2007의 경우입니다.
Office 2010 (== 14.0)은 64 비트 버전이 존재하는 첫 번째 Office입니다.
나는이 문제를 해결하는 데 도움이 된이 CodeProject를 발견했습니다 : http://www.codeproject.com/Articles/26520/Getting-Office-s-Version
namespace Software_Info_v1._0
{
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop;
public class MS_Office
{
public string GetOfficeVersion()
{
string sVersion = string.Empty;
Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
appVersion.Visible = false;
switch (appVersion.Version.ToString())
{
case "7.0":
sVersion = "95";
break;
case "8.0":
sVersion = "97";
break;
case "9.0":
sVersion = "2000";
break;
case "10.0":
sVersion = "2002";
break;
case "11.0":
sVersion = "2003";
break;
case "12.0":
sVersion = "2007";
break;
case "14.0":
sVersion = "2010";
break;
default:
sVersion = "Too Old!";
break;
}
Console.WriteLine("MS office version: " + sVersion);
return null;
}
}
}
왜 확인하지 HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\[office.exe]
경우, [office.exe]
예를 들어, 특정 Office 제품 EXE - 파일 이름의 약자 winword.exe
, excel.exe
등 해당 파일의 실행 및 점검 버전 경로가 얻을.
그러한 접근에 대한 비판이 있습니까?
보너스는 설치된 Excel의 특정 버전을 감지 할 수 있다는 것입니다.
나는 그 질문이 오래전에 질문되고 대답되었다는 것을 알고 있지만,이 같은 질문이 내가이 관찰을 할 때까지 나를 바쁘게 만들었다.
To get the build number (e.g. 15.0.4569.1506
), probe HKLM\SOFTWARE\Microsoft\Office\[VER]\Common\ProductVersion::LastProduct
, where [VER]
is the major version number (12.0 for Office 2007, 14.0 for Office 2010, 15.0 for Office 2013).
On a 64-bit Windows, you need to insert Wow6432Node
between the SOFTWARE
and Microsoft
crumbs, irrespective of the bitness of the Office installation.
On my machines, this gives the version information of the originally installed version. For Office 2010 for instance, the numbers match the ones listed here, and they differ from the version reported in File > Help
, which reflects patches applied by hotfixes.
public string WinWordVersion
{
get
{
string _version = string.Empty;
Word.Application WinWord = new Word.Application();
switch (WinWord.Version.ToString())
{
case "7.0": _version = "95";
break;
case "8.0": _version = "97";
break;
case "9.0": _version = "2000";
break;
case "10.0": _version = "2002";
break;
case "11.0": _version = "2003";
break;
case "12.0": _version = "2007";
break;
case "14.0": _version = "2010";
break;
case "15.0": _version = "2013";
break;
case "16.0": _version = "2016";
break;
default:
break;
}
return WinWord.Caption + " " + _version;
}
}
ReferenceURL : https://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office
'Programing' 카테고리의 다른 글
Kotlin에서 @Autowired와 같은 스프링 주석을 사용하는 방법은 무엇입니까? (0) | 2020.12.29 |
---|---|
오류 메시지“응용 프로그램을 설치하거나 실행할 수 없습니다. (0) | 2020.12.29 |
자바 스크립트 유형 배열 및 엔디안 (0) | 2020.12.29 |
mysql의 테이블에서 모든 레코드 삭제 (0) | 2020.12.29 |
WordPress 설치의 wp_options 테이블에서 과도 현상을 제거 할 수 있습니까? (0) | 2020.12.29 |