Connection Client is required to license Bentley products, but it will run at login and auto start every 60 minutes by default! Connection Client re-creates the auto run at login registry keys every time it is used!

The below PowerShell script will change the auto start interval from 1 hour (default) to 1 day (longest possible interval), delete the registry keys for auto start at login, and set a scheduled task to delete auto start registry keys every 12 hours, at login, and at start up. That should show it.

These changes will allow users who need Bentley software to still use it, but users who do not need to constantly use Bentley products will not have to see Connection Client.

This method will work with the 2022 CONNECT version of Bentley products, and should work with previous and future versions–as long is Bentley is using these registry values:

HKLM\Software\Microsoft\Windows\CurrentVersion\Run “Bentley License Service” HKCU\Software\Microsoft\Windows\CurrentVersion\Run “Bentley License Service” HKCU\Software\Microsoft\Windows\CurrentVersion\Run “MySELECT.exe”

NoAutoConnectionClient.ps1

#Requires -RunAsAdministrator
#	#https://communities.bentley.com/communities/other_communities/licensing_cloud_and_web_services/w/wiki/36380/faq---connection-client
#	#https://communities.bentley.com/communities/other_communities/licensing_cloud_and_web_services/w/wiki/54757/suppress-the-connection-client-prompt

#Connection Client will auto start every 1 hour by default!
#Change the default timer from 1 hour to 1 day by editing "PopupIntervalMinutes" in Bentley.Connect.Client.exe.config
$file = 'C:\Program Files\Common Files\Bentley Shared\CONNECTION Client\Bentley.Connect.Client.exe.config'
$find = '<add key="PopupIntervalMinutes" value="60" />'
$replace = '<add key="PopupIntervalMinutes" value="1440 " />'

(Get-Content $file).replace($find, $replace) | Set-Content $file

#Everytime Connection Client is used it remakes the reg keys to auto start at login. Create a scheduled task to delete the reg keys every 12 hours, at login, and at startup.
$user = "SYSTEM"

$action = @(
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f'), 
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f'),
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "MySELECT.exe" /f')
)

$trigger = @(
	$(New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 5am), 
	$(New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 5pm),
	$(New-ScheduledTaskTrigger -AtLogOn),
	$(New-ScheduledTaskTrigger -AtStartup)
)

Unregister-ScheduledTask -TaskName "NoAutoStart_Bentley_Connection_Client" -Confirm:$false -erroraction 'silentlycontinue'
New-ScheduledTaskPrincipal -UserId SYSTEM -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "NoAutoStart_Bentley_Connection_Client" -Description "Disables Auto-Start of Bentley Connection Client" -user $user -RunLevel Highest

#Delete auto run keys
Remove-ItemProperty HKLM\Software\Microsoft\Windows\CurrentVersion\Run -Name "Bentley License Service" -Force -erroraction 'silentlycontinue'
Remove-ItemProperty HKCU\Software\Microsoft\Windows\CurrentVersion\Run -Name "Bentley License Service" -Force -erroraction 'silentlycontinue'
Remove-ItemProperty HKCU\Software\Microsoft\Windows\CurrentVersion\Run -Name "MySELECT.exe" -Force -erroraction 'silentlycontinue'

Here is a breakdown of the three features of this script in case you need to use just a single piece.

1. Increase the duration of the auto start interval.

The Bentley.Connect.Client.exe.config file locationed here: “C:\Program Files\Common Files\Bentley Shared\CONNECTION Client" has a line that sets the “PopupIntervalMinutes” to a default of 60 minutes. The max is 1440 per Bentley’s website.

Replace this line:

'<add key="PopupIntervalMinutes" value="60" />'

With this:

'<add key="PopupIntervalMinutes" value="1440 " />'

Use PowerShell to parse and replace text in a file:

#Connection Client will auto start every 1 hour by default!
#Change the default timer from 1 hour to 1 day by editing "PopupIntervalMinutes" in Bentley.Connect.Client.exe.config
$file = 'C:\Program Files\Common Files\Bentley Shared\CONNECTION Client\Bentley.Connect.Client.exe.config'
$find = '<add key="PopupIntervalMinutes" value="60" />'
$replace = '<add key="PopupIntervalMinutes" value="1440 " />'

(Get-Content $file).replace($find, $replace) | Set-Content $file

2. Make a scheduled task to delete the registry keys that enable Connection Client auto start at login.

Create a scheduled task with PowerShell that defines multiple actions and multiple triggers. The action is to run these CLI commands:

reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "MySELECT.exe" /f

The triggers are daily at 5am, daily at 5pm, logon, and startup. Just to be thorough. Modify as needed.

#Everytime Connection Client is used it remakes the reg keys to auto start at login. Create a scheduled task to delete the reg keys every 12 hours, at login, and at startup.
$user = "SYSTEM"

$action = @(
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f'), 
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "Bentley License Service" /f'),
	$(New-ScheduledTaskAction –Execute 'cmd.exe' -Argument '/c reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v "MySELECT.exe" /f')
)

$trigger = @(
	$(New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 5am), 
	$(New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 5pm),
	$(New-ScheduledTaskTrigger -AtLogOn),
	$(New-ScheduledTaskTrigger -AtStartup)
)

Unregister-ScheduledTask -TaskName "NoAutoStart_Bentley_Connection_Client" -Confirm:$false -erroraction 'silentlycontinue'
New-ScheduledTaskPrincipal -UserId SYSTEM -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "NoAutoStart_Bentley_Connection_Client" -Description "Disables Auto-Start of Bentley Connection Client" -user $user -RunLevel Highest

3. Delete the auto start at login registry keys.

While we are at it, just run the PowerShell commands to delete the registry keys that enable auto starting Connection Client at login.

#Delete auto run keys
Remove-ItemProperty HKLM\Software\Microsoft\Windows\CurrentVersion\Run -Name "Bentley License Service" -Force -erroraction 'silentlycontinue'
Remove-ItemProperty HKCU\Software\Microsoft\Windows\CurrentVersion\Run -Name "Bentley License Service" -Force -erroraction 'silentlycontinue'
Remove-ItemProperty HKCU\Software\Microsoft\Windows\CurrentVersion\Run -Name "MySELECT.exe" -Force -erroraction 'silentlycontinue'

FAQ - CONNECTION Client https://communities.bentley.com/communities/other_communities/licensing_cloud_and_web_services/w/wiki/36380/faq—connection-client

Suppress the CONNECTION Client prompt
https://communities.bentley.com/communities/other_communities/licensing_cloud_and_web_services/w/wiki/54757/suppress-the-connection-client-prompt