#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; }
В свойствах проекта надо переключить Character set с Unicode (который в Visual Studio выставляется для новых проектов по умолчанию) на Multibyte.
Ты в ANSI функцию пытаешся засунуть юникод строку(wchar_t) используй либо юникод версию функции с W на конце, либо сделай как писали люди выше
Нужно либо поставить многобайтовую кодировку, вместо символов юникода, либо изменить разрядность на 32