Disable vctip for good
vctip.exe is a (small) component of the Microsoft C and C++ toolchain.
According to the documention 🗄️ , it is a program that:
[…] collects information about errors, computer hardware, and how people use Visual Studio, without interrupting users in their tasks at the computer.
Unfortunately, I’ve experienced more than once some instabilities in some build processes that were caused by vctip.exe. But even if it where super-stable, especially when a machine is under heavy load, I would like to remove all unnecessary processes. vctip.exe might not consume too many resources, but why risk it?
I’ve tried everything described in the documentation; I set the appropriate option in Visual Studio, . I’ve also added a DWORD value named OptIn with the value 0 at HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\17.0\SQM, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\17.0\SQM, and HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\VisualStudio\SQM.
I’ve also restarted the machine, just in case.
There was nothing to do; I could still see the vctip.exe process.
So I decided to remove it completely. I would have preferred to avoid it, just in case it might have led to other errors, but I found no better way to deal with it.
After that, you do not even need to reboot; I’ve verified that all builds are still working. I do not know if it actually helps to make the build process slightly faster (it could be that the build process tries to start vctip.exe multiple times before giving up), but at least the instabilities were gone.
This approach has one main drawback: I need to delete the vctip.exe executables after every update.
After fixing those instabilities, I decided to verify if other projects had similar issues.
Apparently, the Chromium Project 🗄️ did have issues too, and also removed the executable.
The LibreOffice team had another issue 🗄️, and fixed it by defining the environment variable VSCMD_SKIP_SENDTELEMETRY to 1.
So what I currently do is trying to disable telemetry, this way (in theory) nothing should try to execute vctip.exe, and then remove vctip.exe, so that I am sure it is not executed.
Execute this powershell snippet as administrator:
# disable telemetry from VSDevCMD.bat
[Environment]::SetEnvironmentVariable("VSCMD_SKIP_SENDTELEMETRY", "1", "Machine")
# disable telemetry according to documentation
$key = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\VSCommon\17.0\SQM"
If(!(Test-Path $key)) {
New-Item "$key" -Force
}
Set-ItemProperty -Path "$key" -Name "OptIn" -Value 0 -Type DWord
$key = "HKLM:\SOFTWARE\Microsoft\VSCommon\17.0\SQM"
If(!(Test-Path $key)) {
New-Item "$key" -Force
}
Set-ItemProperty -Path "$key" -Name "OptIn" -Value 0 -Type DWord
$key = "HKLM:\Software\Policies\Microsoft\VisualStudio\SQM"
If(!(Test-Path $key)) {
New-Item "$key" -Force
}
Set-ItemProperty -Path "$key" -Name "OptIn" -Value 0 -Type DWord
# disable telemetry for good
Get-ChildItem -Path "C:\Program Files\Microsoft Visual Studio\" -Recurse -Filter "vctip.exe" -ErrorAction SilentlyContinue | Remove-Item -Force
If you have questions, comments, or found typos, the notes are not clear, or there are some errors; then just contact me.