Application Optimization Essentials: Google Chrome
In previous blog posts, we talked about optimizations as they related to the Windows Operating System, including Active Setup, the Microsoft Store, Services & Scheduled Tasks, and more.
WRITTEN BY
TABLE OF CONTENT
he focus of this blog series will be Application Optimizations. We started this series with our Introduction to Application Optimization, which showcases common items to look for when it comes to Application Optimization. This blog will deep dive into one of the most commonly used browsers Google Chrome.
Since these blogs will be hyper-focused on just one application or application type, they will be mostly shorter in nature, but hopefully will still provide you with good information that you can use to optimize your environment.
Please note that the optimizations provided in this blog are intended only as a guide. Be sure to test the optimizations described internally before pushing the changes to your production environment.
Now, let's jump directly in.
What is Google Chrome?
Google Chrome is a cross-platform web browser which is used in many environments worldwide. It is widely utilized within corporate and personal environments alike and is a great addition to any VDI environment … but that doesn't make it perfect.
As of the writing of this blog, Google Chrome is at version 110.0.5481.100. Please take this into account when attempting to optimize the application.
Google Chrome has quite a few options for optimization that we will cover, including how to prevent the application from auto-updating, preventing it from running each new login, and how to deal with the ever-present Software Reporter Tool (SRT).
Let's talk about installation
Google Chrome follows two installation paths. For personal or non-enterprise business use, you can download Chrome on Windows for either online or offline installation. For enterprise business use, you can also use either of the Chrome on Windows downloads, but I would recommend the Chrome Enterprise Bundle.
Chrome on Windows downloads as an executable and the installation path is straightforward and all optimization happens after installation is complete.
The Chrome Enterprise Bundle downloads as a zip file which contains not only the installer, in MSI format, but also documentation and configuration materials. The Chrome Enterprise Bundle contains an ADMX template used to customize Google Chrome through policy, whether local or group. A list of possible configuration items is located here.
When you have decided your installation path, install Google Chrome.
Ok, so Google Chrome is installed, now what?
Now that Google Chrome is installed, we need to go down the list of possible optimizations that can be done.
Services
Google Chrome installs three services that can potentially be optimized. The Display Name of these services are:
The purpose of the Google Chrome Elevation Service is to allow Google Chrome to perform administrative actions, generally around automatic updates.
The purpose of the two Google Update Services is to keep Google Chrome updated automatically.
We can use the same PowerShell commands as described in Part 3 of the Windows OS Optimization Essentials blog here.
Scheduled Tasks
Google Chrome installs two scheduled tasks that can potentially be optimized. These scheduled tasks exist at the root Task Scheduler Library level and are named:
The GUID
may change depending on the version of the application installed.
Both scheduled tasks are used for automatic updates for the Google application.
We can use the same PowerShell commands as described in Part 3 of the Windows OS Optimization Essentials blog here.
Active Setup
The Google Chrome installer creates a single Active Setup item that can potentially be optimized. This Active Setup item exists within the registry at HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{GUID}
. The GUID can potentially change based upon the version of the application.
This Active Setup item is used to configure Chrome for new users on their first login. One of the more noticeable actions is that each new user will receive the Google Chrome icon on their desktop.
We can use the same PowerShell commands as described in Part 1 of the Windows OS Optimization Essentials blog here.
Startup Items
Google Chrome does not create any Startup Items.
Registry
Google Chrome has one registry value that I have found which pertains to optimizations: Hardware Acceleration Mode.
Hardware Acceleration Mode is the ability for the application to utilize more than just the CPU to allow itself to run smoothly. While this may seem like a good thing, and it generally is, in VDI environments, enabling Hardware Acceleration Mode can be problematic as the application will try to utilize hardware components that either don't exist or exist in a minimal capacity due to hardware considerations.
Disabling or enabling Hardware Acceleration Mode can be done from within Google Chrome, but it can also be done via the registry. The value for this exists at HKLM\SOFTWARE\Policies\Google\Chrome
. If the registry key structure doesn't already exist, create as necessary. The value itself is a DWORD value called HardwareAccelerationModeEnabled and has a value of 0 to disable and a value of 1 to enable.
Other
Google Chrome has one other potential optimization that can be performed, but it requires a more in-depth explanation due to the complexity of the optimization.
When a user opens Google Chrome for the first time, quite a few “things” happen. One of these things is the download and execution of an application called the Software Reporter Tool. The purpose of this tool is to monitor and report on applications that interact with Chrome in an effort to find malware.
While this may be a helpful tool, another reality is that the tool can cause CPU utilization spikes up to 75% for an extended period of time. This alone can cause issues for end user experience, but the tool will also send a large amount of information back to Google, which may be undesirable from a business perspective. In a non-persistent VDI environment, this can be even more problematic, as the tool will run more often due to the nature of non-persistence.
There are ways to optimize this application so that it runs according to your wishes, but it's based upon the limits set upon you by Google.
If the machine you are trying to optimize is joined to a domain, you can easily disable either the Software Reporter Tool or just the Reporting aspect. To do this, you will need to set two registry values. You will probably need to create the key structure in the registry to create the values. These values will exist in HKLM\Software\Policies\Google\Chrome
and are called ChromeCleanupEnabled and ChromeCleanupReportingEnabled. Each value is a DWORD value. Set to 0 is disabled, while set to 1 is enabled.
You can use the following PowerShell commands to implement these changes as well.
To create the folder structure:
New-Item -Path "(Path)"
To create the values:
Set-ItemProperty -Path "HKLM:\Software\Policies\Google\Chrome" -Name "ChromeCleanupEnabled" -Type "DWord" -Value 0
Set-ItemProperty -Path "HKLM:\Software\Policies\Google\Chrome" -Name "ChromeCleanupReportingEnabled" -Type "DWord" -Value 0
If, on the other hand, your machine is not joined to a domain, then the implementation of the values denoted above will not work and the best way I have found to prevent the tool from running is to stop it from being downloaded. This option does not allow the granularity in control as the previous method, as it's an all-or-nothing implementation.
The Software Reporter Tool downloads inside each user's profile at %localappdata%\Google\Chrome\User Data
in a folder called swreporter. Underneath the swreporter folder will be another folder specific to the version of the tool, underneath will exist the executable itself. Please be aware that the download of the SRT doesn't happen immediately upon opening Chrome; it can actually happen up to a couple hours later, so don't be concerned if you don’t see the file immediately during testing.
Now, to prevent the tool from downloading, you will actually need to change the permissions on the swreporter folder itself. While this can be accomplished many ways, my preferred method is to do this via PowerShell.
Please note the below commands can be done prior to the opening of Google Chrome so that the folder permissions are set before they are created.
First, you will need to set a variable for the folder to which we wish to change the permissions.
$folder = "$env:LocalAppData\Google\Chrome\User Data\swreporter"
Next, we need to create this folder structure, if it doesn't already exist.
New-Item $folder -ItemType "Directory"
Note, the above command will fail with a non-terminating error if the folder already exists. If the folder exists, you can safely ignore this error or bypass this command altogether.
Now, we wish to start working with the permissions themselves. To do this, we need to set a variable pulling the ACLs (permissions) of the folder so that we can change them.
$acl = Get-ACL -Path $folder
Next, we wish to remove all inherited permissions and existing non-inherited existing permissions from the folder.
$acl.SetAccessRuleProtection($True, $False)
In the above command, the $True removes the inherited permissions while the $False removes all non-inherited existing permissions.
Lastly, now that we have created the permissions we wish to use, we need to implement these changes to the swreporter folder.
Set-Acl -Path $folder -AclObject $acl | Out-Null
We have now removed all permissions to the swreporter folder and prevented the Software Reporter Tool from downloading and executing for the logged-on user.
What's Next?
This blog covers the optimization options for Google Chrome. The next blog will discuss optimization possibilities for Microsoft Edge.
As always, any information provided in this guide are recommendations only and should be vetted against your environment before implementing in a production scenario.
If you need assistance in optimizing your VDI or DaaS images, check out our Nutanix Xpert Services Template Image Creation and Optimization service.
Contact Us
Need help with your Frame deployment, have an idea for a new use case, or just want to learn more about Frame?
Email us at frame-sales@dizzion.com and one of our experts will reach out!
Subscribe to our newsletter
Register for our newsletter now to unlock the full potential of Dizzion's Resource Library. Don't miss out on the latest industry insights – sign up today!
Dizzion values your privacy. By completing this form, you agree to the processing of your personal data in the manner indicated in the Dizzion Privacy Policy and consent to receive communications from Dizzion about our products, services, and events.