Перейти к содержанию
Опубликовано
comment_2800

Всем привет. Пытаюсь написать менеджер программ на с++. Нашел функцию MsiEnumProductsW она перечисляет все установленные продукты. 

#include <iostream>
#include <windows.h>
#include <msiquery.h>

using namespace std;



int main() {
	size_t const StrGuidBuffSize = 39;
	wchar_t Buffer[StrGuidBuffSize];
	UINT Index = 0;

	while (0 == MsiEnumProductsW(Index, &Buffer[0]))
	{
		++Index;
	}

	cout << (Index);

	return 0;
}

выводит  просто число 227

 

я так понял, что она посчитала кол-во установленных программ? а как мне получить их список с именами и т.п? Нашел еще функцию MsiGetProductInfoW но не понимаю как в нее передавать параметры)

Изучая язык я понял что без наставника мне его будет не осилить, так что если есть добрые люди у которых есть время то напишите в лс пожалуйста)

Рекомендуемые сообщения

Опубликовано
comment_2801
#include <iostream>
#include <windows.h>
#include <msiquery.h>
#include <cstdio>

#pragma comment(lib, "Msi.lib")

using namespace std;



int main() {
	size_t const StrGuidBuffSize = 39;
	char Buffer[StrGuidBuffSize];
	UINT Index = 0;

	char BufferRead[255];

	DWORD lrn = 255;

	while (0 == MsiEnumProductsA(Index, &Buffer[0]))
	{
		++Index;
		

		MsiGetProductInfoA(Buffer, INSTALLPROPERTY_INSTALLEDPRODUCTNAME, BufferRead, &lrn);

		printf("%d %s %s\n", Index, Buffer , BufferRead);
	}

	

	printf(" \n");

	system("pause");
	return 0;
}

Смотри тут параметры и подставляй что нужно https://docs.microsoft.com/en-us/windows/win32/api/msi/nf-msi-msigetproductinfoa

Screenshot_2.png

Гость
Эта тема закрыта для публикации ответов.