如何在系统托盘中禁用 VsHub.exe?

启动 VisualStudio2015还会启动另外两个可执行文件:

VsHub.exe

还有

VsHub. Server. HttpHost.exe

这两者在任务管理器中都占有相当大的空间。

如何删除此“ VisualStudioHub”选项?我不使用任何 VisualStudio 的“一流”特性,包括 VisualStudioHub。

79191 次浏览

我使用的是 Windows7x64和 VisualStudioExpress2015。我已经终止了任务管理器的烦人进程。然后我删除了 C: Program Files (x86) Common Files 微软共享的 VsHub文件夹。这个操作解决了问题,但是需要管理员权限。

根据 Microsoft Program Manager 对 Visual Studio Blog 在 VisualStudio 博客上发表评论的评论,它用于支持跨 VS 套件的多工具通信。考虑到 Visual Studio 有多么复杂,我不建议像 xakepp35的回答那样苛刻(删除它)。

在运行 VS2015的 Win10x64上,调试时有三个进程,RAM 总使用量小于150MB。除非您正在使用最小 RAM 的机器上进行翻页,否则不需要太担心。考虑到您正在运行 VS2015,我猜您有150MB 的空闲空间。

除非您找到明确显示 Hub 所支持的内容的文档,否则我建议不要使用它。根据我的经验,VisualStudio 的安装过于容易破坏。

一些没有人提到过的事情..。

根据我的防火墙日志,VsHub.exe、 Microsoft.VsHub.Server.HttpHost.exe 和 Microsoft.VsHub.Server.HttpHostx64.exe 都试图与 在线通信。

我看到的有外联尝试的地址包括191.236.194.164(Microsoft Azure,Wichita Kansas)和23.102.160.172(Microsoft Azure,Redmond Washington)。

我知道“现代”软件应该是云集成的,但是..。

作为一个不需要微软 Azure 服务器任何东西的人,一个合法地关心隐私并且不向外界泄露我工作的任何部分的人,我真的希望 A)有一个选择不运行这些程序的方法,或者 B)提供限制他们在线聊天的设置。是的,防火墙阻断了连接,但这是最后的手段。

只要一个简单的复选框,“[]联系微软 Azure 服务器”就可以了。这是否意味着不运行有问题的程序或只是让他们没有进行在线连接对我来说不重要。我想从资源的角度来看,前者会更好,因为它会使用更少的资源。

作为一个规则,我不会建议更改已安装应用程序的文件套件中的文件,但是由于我有一个虚拟机环境,在其中我可以测试对 Visual Studio 2015的更改,而不会产生太多后果(快照很棒) ,所以我尝试更改这三个文件的权限(删除继承,然后禁止为用户读取和执行)。

瞧,不再运行 VsHub 应用程序,试图联系远程系统。

视觉工作室马上就来了,我看不出有什么不好。

Noel

这似乎是一个沟通的瑞士军刀视觉工作室按照@sraboy 的回答。它在调试期间用于显示关于正在运行的进程的性能信息,也用于向 Microsoft 发送关于您正在进行的项目的遥测信息。您可以在禁用代码的情况下构建和逐步执行代码(乍看之下)。

使用 AV 删除、重命名或阻塞 vshub 进程创建将破坏我提到的性能跟踪。当使用 Visual Studio 作为 它与 vortex.data.microsoft.com 通信,传递诸如解决方案和项目 GUID 之类的信息以及您的帐户 ID。时,丢失 vshub 可以提高隐私性。下面是截取 HTTPS 数据的 Fiddler 截图。

在网络级别阻止访问有助于保护隐私,但它不会解决资源使用问题。我认为后者是运行 VisualStudio 的正常开销。

对于您的用例,您可能可以通过某种形式的禁用(用您的防病毒软件阻止实例化可能是最干净的方法) ,但它可能支持额外的功能,我还没有想出来。

Data communicated to Microsoft, via vshub

VisualStudio 尝试在线连接的原因之一似乎也是,默认情况下,在线搜索 VisualStudio 及其扩展的更新。

此外,Visual Studio 在其核心内包含一个 Internet Explorer 版本,以便网页(和扩展)可以现场下载。换句话说,它也是一个浏览器,而且我们都知道... ... 微软非常热衷于检查用户数据和软件使用情况。

菜单 工具选择中有很多在线功能。 (老实说,我更喜欢 单一显影,即使它有缺陷。)

我想我应该试着解释一下 VS 集线器以及它的用途。我为微软工作。

正如 sraaboy 提到的,VS Hub 是一个外部服务主机,Visual Studio (以及其他基于 VS shell 的产品,如 Blend)使用它来支持多工具通信,在 devenv (VS)中提高响应能力,并使某些服务能够延长产生过程的生命周期。目前在 VS Hub 中托管的一组服务包括许多在其他应答中调用的项目,例如漫游设置、处理在诊断工具中呈现的大量 ETL 数据、一些遥测报告以及扩展自动更新和通知。这组服务在未来很可能会增长,所以即使这些服务现在看起来没有必要,将来还会有其他服务托管在那里(例如,通过重命名建议禁用 vshub.exe 是一个相当大的打击: ——)。

就生存期而言,vshub 和主机进程(即 Microsoft.VsHub。服务器。HttpHost (64).Exe)可以在 devenv.exe 关闭后继续运行。然而,它们不应该无限期地运行下去。在大多数情况下,这些进程将在基于 VS 的 shell 关闭的最后一个实例约5分钟内终止。因此,如果您有一个正在运行的 VS 实例(devenv.exe)和一个正在运行的 Blend 实例(Blend.exe) ,并且您关闭了 devenv.exe,vshub 和相关的主机进程将继续运行。如果随后关闭 blend.exe,vshub 和相关的主机进程仍将运行。然而,大约5分钟后,这些额外的进程将关闭。如果您在这5分钟的窗口内启动了 devenv.exe 的另一个实例,那么 vshub 和相关的主机进程将不会终止,而是继续运行(基本上主机进程在5分钟内没有收到任何请求时就会终止,在所有主机进程终止后,vshub.exe 进程本身也会终止)。

在资源方面,vshub.exe 进程本身应该总是相对轻便的。如果它变大了,那么这就是一个错误,我很想知道它,这样我们就可以修复它: ——)另一方面,主机进程可能会变得非常大,这取决于所托管的服务。特别是,诊断工具通过处理 ETL 来工作。ETL 可以非常、非常、大,因此,主机可能会使用大量资源。诊断团队正在寻找减少这种情况的方法,但目前,在不需要诊断工具时关闭它应该有助于缓解问题。

就在线连接而言,目前托管服务集中有三个主要来源(注意,这将随着时间的推移而改变)。首先,正如 user3345048所提到的,检测和自动更新扩展的服务在该过程中运行。控制通信的选项在 工具 | 选项 | 环境 | 扩展和更新中(请参见前两个复选框)。其次,漫游设置在 VSHub 中作为服务运行。控制此行为的设置在 工具 | 选项 | 环境 | 同步设置中(或者更全面地说,如果您没有登录到 VS 右上角的个性化帐户中)。最后,VS 中心确实报告了遥测数据。这个数据量可以通过 帮助 | 客户反馈选项 | 设置..。菜单项显著减少。你也可以了解到微软收集的遥测技术,以及它是如何在那个位置使用的。

正如 xakepp35提到的,您可以删除 C: Program Files (x86) Common Files 微软共享的 VsHub文件夹。但是,我怀疑更新或其他安装程序可能会尝试重新创建它。

我所做的就是关闭所有的 VS 进程。取得文件夹的所有权(作为管理员) ,然后 RAR (ZIP)向上的文件夹,最后删除它(RAR 作为备份,如果我需要的文件回来)。我的是固态硬盘,所以我想节省空间。否则,您可以简单地重命名它,并将其保留在适当的位置。

然后为了防止它再次被创建,我使用了一个老的 Win 3.1技巧。在 C: Program Files (x86) Common Files 微软共享文件夹中创建一个名为 VsHub.txt的文本文件。然后重命名文本文件,取消 。 txt扩展名,留下一个名为 VsHub的文件。由于操作系统不能在同一位置创建一个文件夹和一个同名文件,噗,它不能作为一个文件夹被 VS 访问,它也不能作为一个文件夹被访问,未来的安装/更新程序也不能作为一个文件夹。然后,如果您需要在未来再次允许访问,只需将 。 txt重新添加到文件中即可。

“ VsHub”应改名为“ SmartMobileCloud”; 这就是它的愚蠢之处,我把它扔了 我的 VisualC 编辑/调试没有受到影响。

安装 VisualStudio 后,删除未使用的扩展,执行 “ C: Program Files (x86) Common Files Microsoft Shared-Delete-VsHub” 修复... 并在那里放置一个“ VsHub”文本文件(没有“ . TXT”) , 所以没有东西可以重建文件夹。

这是 Intellitrace 的 BrowserLink 诊断窗口所需要的。

我有时需要这些特性,但只有8GB 的内存。我通常在90-95% 的使用率,所以我创建了一个批处理文件,通过重命名文件夹和创建一个符号链接到一个虚拟文件的空文件夹来切换 VSHB 的开启和关闭。

运行前关闭 VisualStudio。

@echo off
goto CheckVsHubRunning


:KillVsHub
echo Killing VsHub Process
taskkill /IM VsHub.exe /T /F
TIMEOUT /T 3 /NOBREAK
:CheckVsHubRunning
ver > nul
tasklist /FI "IMAGENAME eq VsHub.exe" | find /I /N "VsHub.exe"
if "%ERRORLEVEL%"=="0" goto KillVsHub
if "%ERRORLEVEL%"=="1" echo VsHub is not running.
echo.


PUSHD "C:\Program Files (x86)\Common Files\microsoft shared"
IF NOT EXIST "VsHub.original" (
echo Renaming Original VsHub folder.
RENAME "VsHub" "VsHub.original"
)
IF NOT EXIST "VsHub.dummy" (
echo Creating Dummy Folder and Contents
mkdir       "VsHub.dummy"
copy NUL >  "VsHub.dummy\1.0.0.0"
copy NUL >  "VsHub.dummy\ServiceModules"
mkdir       "VsHub.dummy\dummy"
)


IF EXIST "VsHub\dummy" (
echo ENABLING VsHub
echo.
rmdir       VsHub
mklink /d   VsHub   VsHub.original


) ELSE (
echo DISABLING VsHub
echo.
rmdir       VsHub
mklink /d   VsHub   VsHub.dummy
)
echo.
pause

在我的机器上,VSHUB 和它的朋友们通常使用:

  • Exe: 最初为50MB。2 + hrs 后为250-350MB
  • Microsoft.VsHub. Server.HttpHost.exe: 最初为200MB。1 + 小时后为350 + MB
  • Microsoft.VsHub. Server.HttpHostx64.exe: 最初为320MB

这释放了超过1GB 的内存,几乎没有任何功能丢失。

对于那些想要保留 VSHUB 并且仍然能够使用 Fiddler 的人,你可以在 Fiddler 中设置一个 Filter,设置如下:

Request Headers > Hide if URL contains =
REGEX:localhost:\d+\/vshub\/

编辑-你可能也想加上这个:

Hosts > Show only the following Hosts: =
localhost;

为了省略 vortex.data.microsoft.com等请求

vshub filter in Fiddler