You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.0 KiB
133 lines
3.0 KiB
#include <windows.h>
|
|
#include <ole2.h>
|
|
#include <appmgmt.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
void
|
|
GuidToString(
|
|
GUID & Guid,
|
|
PWCHAR pwszGuid
|
|
)
|
|
{
|
|
wsprintf(
|
|
pwszGuid,
|
|
L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
|
Guid.Data1,
|
|
Guid.Data2,
|
|
Guid.Data3,
|
|
Guid.Data4[0],
|
|
Guid.Data4[1],
|
|
Guid.Data4[2],
|
|
Guid.Data4[3],
|
|
Guid.Data4[4],
|
|
Guid.Data4[5],
|
|
Guid.Data4[6],
|
|
Guid.Data4[7]
|
|
);
|
|
}
|
|
|
|
void
|
|
StringToGuid(
|
|
PCHAR pszGuid,
|
|
GUID * pGuid
|
|
)
|
|
{
|
|
WCHAR wszGuid[256];
|
|
|
|
wsprintf((WCHAR*)wszGuid, L"%S", pszGuid);
|
|
CLSIDFromString(wszGuid, pGuid);
|
|
}
|
|
|
|
|
|
void __cdecl main(int argc, char** argv)
|
|
{
|
|
LONG Error;
|
|
PMANAGEDAPPLICATION rgApps;
|
|
DWORD dwApps;
|
|
GUID CategoryGuid;
|
|
GUID* pCategory = NULL;
|
|
|
|
if (argc >= 2) {
|
|
|
|
StringToGuid(argv[1], &CategoryGuid);
|
|
|
|
pCategory = &CategoryGuid;
|
|
|
|
printf("Listed apps will come from category %s\n", argv[1]);
|
|
|
|
}
|
|
|
|
Error = GetManagedApplications(
|
|
pCategory,
|
|
pCategory ? MANAGED_APPS_FROMCATEGORY : MANAGED_APPS_USERAPPLICATIONS,
|
|
MANAGED_APPS_INFOLEVEL_DEFAULT,
|
|
&dwApps,
|
|
&rgApps);
|
|
|
|
if (ERROR_SUCCESS == Error) {
|
|
|
|
printf("GetManagedApplications SUCCEEDED\n");
|
|
|
|
printf("Returned %d Apps\n", dwApps);
|
|
|
|
for (DWORD dwApp = 0; dwApp < dwApps; dwApp ++)
|
|
{
|
|
WCHAR wszGuid[256];
|
|
PMANAGEDAPPLICATION pApp;
|
|
|
|
pApp = &(rgApps[dwApp]);
|
|
|
|
printf("\nApp: %ls\n", rgApps[dwApp].pszPackageName);
|
|
|
|
printf("Publisher: %ls\n", pApp->pszPublisher);
|
|
|
|
printf("Revison: %d.%d build %d\n", pApp->dwVersionHi, pApp->dwVersionLo, pApp->dwRevision);
|
|
|
|
printf("Support URL: %ls\n", rgApps[dwApp].pszSupportUrl);
|
|
|
|
printf("GPO Name: %ls\n", rgApps[dwApp].pszPolicyName);
|
|
|
|
GuidToString(rgApps[dwApp].GpoId, wszGuid);
|
|
printf("GPO: %ls\n", wszGuid);
|
|
fflush(stdin);
|
|
|
|
GuidToString(rgApps[dwApp].ProductId, wszGuid);
|
|
printf("Product: %ls\n", wszGuid);
|
|
fflush(stdin);
|
|
|
|
printf("App Path Type ");
|
|
|
|
switch (rgApps[dwApp].dwPathType)
|
|
{
|
|
case MANAGED_APPTYPE_WINDOWSINSTALLER:
|
|
printf("Darwin\n");
|
|
break;
|
|
case MANAGED_APPTYPE_SETUPEXE:
|
|
printf("Crappy ZAW\n");
|
|
break;
|
|
case MANAGED_APPTYPE_UNSUPPORTED:
|
|
printf("Unsupported\n");
|
|
break;
|
|
default:
|
|
printf("INVALID\n");
|
|
}
|
|
|
|
fflush(stdin);
|
|
}
|
|
|
|
LocalFree(rgApps);
|
|
|
|
} else {
|
|
printf("GetManagedApplications returned %x\n", Error);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|