Inventorying Microsoft SoftGrid Streamed Applications

Cristiano wrote this web blog ages ago, and I realised that I had never given this one a showing to the masses! Its a great post and this shows you how to extend the MOF file in an ESD system like SMS.  This will allow you to see what is on the client for virtual applications.  Unfortunately, it doesn’t give you more information (how much in cache, has it been run, etc.) but you can at least see that the app was assigned and a desktop refresh (or other method) occurred adding the application.

 

Great work Cristiano!!!

-------------------------------------------------------------

Microsoft Softgrid is a new subject to me, but you guys cannot imagine how well impressed I am. It is the killer application of the century! No more administrative pains with application updates and no more DLL hell on the user's workstation. Cool!

I'm just finishing my first training on the Microsoft Softgrid solution and during the class one of my friends came up with a question on how to get inventory information about the streamed applications being executed on the workstations. My colleague Plínio Queiroz came also with the idea of a sms_def.mof extension to deal with this issue. That's great. We can use the mof extension to collect the softgrid information on the client using WMI and the registry provider and send to the SMS site database. After the inventory collection we can get historical information of applications being executed, when a particular application was deleted, when it was streamed, etc...

The result? We developed a simple mof extension to be used with SMS2003 in order to get the inventory information. If you want to use it, just follow the steps below:

  • Get the default sms_def.mof from the SMS 2003 \SMS\inboxes\clifiles.src\hinv.
  • Include the following code at the end of the sms_def.mof file.

#pragma namespace("\\\\.\\root\\CIMv2")
[dynamic, provider("RegProv"),
ClassContext("local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Softricity\\SoftGrid Client\\CurrentVersion\\Applications")
]
class Win32Reg_SoftGridApplications
{
[key]
string ApplicationName;
[PropertyContext("DescriptionURL")]
string DescriptionURL;
[PropertyContext("OriginalDescriptionURL")]
string OriginalDescriptionURL
};

#pragma namespace("\\\\.\\root\\CIMv2\\sms")
[SMS_Report(TRUE),
SMS_Group_Name("SoftGridApplications"),
SMS_Class_ID("MICROSOFT|SOFTGRIDAPPLICATIONS|1.0")]
class Win32Reg_SoftGridApplications : SMS_Class_Template
{
[SMS_Report(TRUE),key]
string ApplicationName;
[SMS_Report(TRUE)]
string DescriptionURL;
[SMS_Report(TRUE)]
string OriginalDescriptionURL;
};

  • To ensure that your extension is working, compile the MOF file on one workstation with SMS and the Softgrid clients installed. To do that use the mofcomp.exe tool.

mofcomp sms_def.mof

  • If you are using SMS2003 you need to create a package to compile the mof file on each SMS client. If you are using SMS 2.0 just wait. During the next appropriate cycle the clients will get the updated mof file.

Wait for the SMS client policy update and you can use the Resource Explorer or the report features of SMS to get all the information you need about which applications are running on your Microsoft Softgrid enabled workstations.

Note: We are getting only the name of the application and the location of the OSD, you can extend the sample to get more information. If you improve the extension or if you create cool reports, please send to us...

Curious to see some results? Check the following screenshots:

The SMS Resource Explorer listing the Softgrid streamed applications

The SMS Resource Explorer historical data showing an application deletion (yes, you will know when someone removes a streamed application)

A simple SMS report on Softgrid streamed applications

The SMS report was created using the following SQL statement:

SELECT v_R_System.Netbios_Name0, v_GS_SOFTGRIDAPPLICATIONS.ApplicationName0 AS 'SoftGrid Application',
v_GS_SOFTGRIDAPPLICATIONS.DescriptionUrl0
FROM v_R_System INNER JOIN
v_GS_SOFTGRIDAPPLICATIONS ON v_R_System.ResourceID = v_GS_SOFTGRIDAPPLICATIONS.ResourceID

Regards, Cris.