BgInfo Replacement

Do you know BgInfo from Sysinternals? It’s a neat little tool that shows information about current system on a desktop. It’s there when you sign in so you don’t have to go and dig for basic information like IP address or hostname. When you’re connect to several servers at once, It’s easy to lose track, and having the basic info always there on the screen is nice to have.

This is a must-have on Windows servers with desktop experience, but BgInfo is no good in 21st century (did I mention it’s from Microsoft)? BgInfo very dated and clunky. It creates a BMP (bitmap) file and puts in onto a desktop. The configuration is easy, that’s why it’s widely used.

Glenn’s Desktop Info is the best alternative to BgInfo. At first, I did not take it seriously due to its name and branding. Its website has amateurish vibes. If that’s not enought to put people off, there’s also no good preset you can just deploy and forget about it. Read to see the setup I am happy with

There may be other uses. If deployed company-wide, a tool like this can replace a sticker under the screen that tells users URL for heldpesk, or a phone number. It also shows the name of the PC so they can tell you.

Desktop Info from Glenn’s Page is a wonderful little tool I like to use on all Windows servers I operate. My config file has a few minor issues i did not address (i mostly want to know who I am logged in as – username including the domain).

I have used some CMD and WMI queries to get version of specific installed software and to check if Zabbix Agent 2 Windows service is running. You can use it for other things based on the example.

Example configuration for a Windows server

Put the config into desktopinfo.ini in program’s directory (e.g., C:\DesktopInfo)

[options]
#top=0
bottom=10
right=0
width=430
font-size=11
noresults=Unknown
inimonitortime=1
#cleartype=1
transparency=90
nav=0
line-spacing=2
font-quality=4

[text]
menu-language=
menu-manual=

[items]

COMMENT=active,interval:0,style:bu,text:System Info
HOST=active,text:Hostname,display:%3
#USER=set:username,hidden:1
#HOST=text:User,display:%3/%username%
#HOST=set:computername,hidden:1
#WMI=active,text:User,namespace:root\cimv2,query:Win32_NetworkLoginProfile where not Caption like "%NT AUTHORITY%",display:%Caption%
DOMAIN=text:Domain Name,set:userdomain1,no-result:Workgroup (not joined)
CMD=active:1,text:User,file:cmd.exe,parameters:/c echo %USERDOMAIN%\%USERNAME%


BOOTTIME=active,display:%9 %10
UPTIME=active,text:Uptime,display:%1 days %2 hours %3 minutes,threshold1:1 15 0000ff

CPUCOUNT=active,text:CPU Cores,display:%1
PHYSICALRAM=active,text:Memory,display:%2[3.1G] GB (%3% used),threshold1:3 95 0000ff
LOGICALDRIVES=active,text:Drives,display:%1: %5[3.1G] GB (%7[4.1f]% used),threshold1:7 90 0000ff%7 used size in percent

COMMENT=active:1,interval:0,text: 
COMMENT=active,interval:0,text:Network Information
NETWORKINTERFACES=active:1,text:Adapter,display:%2,friendlyfilter:+ethernet-virtual
NETWORKINTERFACES=active,text:IP Address,display:%8,friendlyfilter:+ethernet-virtual
ALLIPADDRESS=active,text:Subnet,display:%mask% / %prefix%
NETWORKINTERFACES=active:1,text:Gateway,display:%17,friendlyfilter:+ethernet-virtual
DNSSERVER=active:1,interval:60,text:DNS,display:%1


COMMENT=active:1,interval:0,text: 
COMMENT=active:1,interval:0,text:Windows Information
#REG=active:1,interval:0,text:Build,value:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR
#OSBUILD2=active:1,interval:0,text:,display:%operating_system%|%architecture%|Installed: %install_date_short%|Version %display_version% (OS Build %build%.%minor_version%)
OSBUILD2=active:1,interval:0,text:Operating System,display:%operating_system%
OSBUILD2=active:1,interval:0,text:Version,display:%architecture% %display_version% (OS Build %build%.%minor_version%)
#OSBUILD2=active:1,interval:0,text:Architecture,display:%architecture%
OSBUILD2=active:1,interval:0,text:Installed On,display:%install_date_short%



#WMI=active:1,interval:3600,text:Last Windows Update,namespace:root\cimv2,query:Win32_QuickFixEngineering where HotFixID="KB5053598",display:%HotFixID% (%InstalledOn%)
#working#WMI=active:1,interval:3600,text:Last Windows Update,namespace:root\cimv2,query:Win32_QuickFixEngineering where HotFixID LIKE 'KB%',display:%HotFixID% (%InstalledOn%)
CMD=active:1,interval:3600,text:Last Update,file:powershell.exe,parameters:-NoProfile -ExecutionPolicy Bypass -Command "Get-WmiObject -Class Win32_QuickFixEngineering | Where-Object { $_.HotFixID -like 'KB*'} | Sort-Object InstalledOn -Descending | Select-Object -First 1 | ForEach-Object { \"$($_.HotFixID) ($($_.InstalledOn))\" }"
#CMD=file:powershell.exe,parameters:-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\last_update.ps1",display:%1,text:Last Update
#CMD=file:powershell.exe,parameters:-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\last_security_update.ps1",display:%1,text:Last Security Update


# Display VMware Tools and Zabbix Agent 2 version
COMMENT=active:1,interval:0,text: 
COMMENT=active,interval:0,text:Software Information
WMI=active:1,interval:3600,text:VMware Tools Version,namespace:root\cimv2,query:Win32_Product where Caption="VMware Tools",display:%Version%
WMI=active:1,interval:3600,text:Zabbix Agent Version,namespace:root\cimv2,query:Win32_Product where Vendor="Zabbix SIA",display:%Caption% %Version%
WMI=interval:60,text:Zabbix Agent 2 State,namespace:root\cimv2,query:Win32_Service where name="Zabbix Agent 2",display:%State%


#COMMENT=active,interval:0,style:b,text:Bold
#COMMENT=active,interval:0,text:Text

Automatic launch after logging in

Just put the shortcut for C:\DesktopInfo\DesktopInfo.exe into startup folder.

For all users

To run on a log in of any user, just put a shortcut into:

shell:common startup

%programdata%\Microsoft\Windows\Start Menu\Programs\StartUp\

%programdata%\Microsoft\Windows\Start Menu\Programs\StartUp\ (C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)

Only for the current user

shell:startup

C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

The difference is current user vs system-wide – anything in the common startup folder runs for all users who log into that machine.

Direct comparison to BgInfo

BgInfo on the left, Desktop Info on the right:

Documentation

There’s an exhaustive documentation in a PDF (Desktop Info Manual.pdf) after you download the portable version of the utility


Other replacements to consider

TED – Tag Every Desktop – it’s nice, but it doesn’t refresh. So, If you change size of your remote window, or user resizes / connect screen, it’s gone.

Notes

In an organization where I do remote support, we don’t have any centralized support methods, and have to ask for users to download TeamViewer from somewhere. (Not to digress, but in my opinion, that’s no good, because anyone can tell users to go to some URL and download TeamViewer Quick Support with any logo you want to build a blind trust. The users have no way of knowing who’s calling them. In one of thousands of calls, the user questions who I am, and do not bat an eye when I start pasting command line commands, and some leave the PC unattended and go grab a coffee.

Worthy to mention

I had an issue where network information showed utter nonsense. See my configs for a fix.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *