gpt4 book ai didi

c++ - 检查 PC 上是否安装了 Outlook

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:08 24 4
gpt4 key购买 nike

有没有一种方法可以让我以编程方式检测 MicrosoftPC 上安装了 Outlook(任何版本)。我必须在非托管 C++ 中执行此操作。

最佳答案

在 MSDN is an example of how to detect Outlook 版本(或者如果安装了 Outlook)。下面是该示例的美化版本:

#include <Windows.h>
#include <Msi.h>

#include "stdafx.h"

static int compareOutlookVersion(const TCHAR* exe)
{
const TCHAR outlookRegister[][MAX_PATH] = {
TEXT("{E83B4360-C208-4325-9504-0D23003A74A5}"), // Outlook 2013
TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010
TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007
TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}") // Outlook 2003
};
const int outlookVersions[] = {
2013,
2010,
2007,
2003
};
DWORD pathLength = 0;

for (int i = 0; i < (sizeof(outlookVersions) / sizeof(outlookVersions[0])); i++)

if (ERROR_SUCCESS ==
MsiProvideQualifiedComponent(
outlookRegister[i],
exe,
(DWORD) INSTALLMODE_DEFAULT,
NULL,
&pathLength
)) {
return outlookVersions[i];
}

return 0;
}

int getOutlookVersion(int* bits)
{
int version;

*bits = 32;
version = compareOutlookVersion(TEXT("outlook.exe"));
if (version) {
return version;
}

*bits = 64;
version = compareOutlookVersion(TEXT("outlook.x64.exe"));
if (version) {
return version;
}

*bits = 0;
return 0; // No Outlook found.
}

int _tmain(int argc, _TCHAR* argv[])
{
HRESULT result;
int version;
int bits;

version = getOutlookVersion(&bits);

if (version) {
printf("Outlook %d, %d bit\n", version, bits);
} else {
printf("No Outlook found.\n");
}

return 0;
}

关于c++ - 检查 PC 上是否安装了 Outlook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com