Leaked source code of windows server 2003
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

#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);
}
}