也许与 RS5 的新沙盒有关。https://twitter.com/epakskape/status/1007316208087994368
4.1.1
Windows 10 build 17741
不要新出现 pacjsworker.exe
新出现了一个 pacjsworker.exe
Google了一下,整个互联网只有另一个SSR的issue中提到了这个文件。

你能把这个 exe 上传上来看看吗?或者打包成 zip 上传也行。
嗯,RS5 (version 1809) 后系统就自带这个文件了
pacjsworker.zip
没有数字签名,看起来很像是微软签发的文件。
从文件说明来看(HTTP Auto Proxy Detection Worker Process),这看起来是一个自动代理检测工具。
但是从文件名来看,这看起来很像是用于处理PAC中JS脚本的工具。
因为这是微软的决定,这边控制不了。
如果你非常在意,可以你停用SS的系统代理,使用Firefox或者SwitchyOmega单独指定代理,应该就不会出现这个了。
最后发现是 PacUrl 后面的参数。每次设置系统代理的时候就会有新的参数,系统就会启动新进程进行处理。影梭这边有功能依赖这些参数,确实不太好处理。我自己本地 fork 了一份,删掉了参数。多谢帮助啦!
此问题在升级到1809后出现,在一些论坛也有该问题报告:
https://steamcn.com/t430331-1-1
初步研究了一下,这个 pacjsworker.exe 是经由WinHttpAutoProxySvc服务(WinHTTP Web Proxy Auto-Discovery Service)启动的,这个服务无法通过重新启动或者停止来清除这些 pacjsworker.exe 进程,如果尝试结束 pacjsworker.exe 的任务,会自动重新启动该进程,只能重新启动计算机。
当然,也可以找到WinHttpAutoProxySvc服务所在的svchost.exe进程然后结束,但是不推荐这样。
查了一下文档:
https://docs.microsoft.com/en-us/windows/desktop/winhttp/winhttp-autoproxy-support
https://docs.microsoft.com/en-us/windows/desktop/winhttp/autoproxy-issues-in-winhttp
不知道是否能有优化的余地?
@celeron533
@changjiangblog 这个问题和微软改变了PAC的处理机制有关,可能得等维护人员修改程序。
目前,除开重新启动计算机,尽量减少切换服务器,减少修改代理模式以外,暂时没有较好的解决办法。
我刚发现这个问题,数了下竟然有七八十个进程😱(看来只好暂时不睡眠电脑了)
我也有这个问题
微软有个bug了,大家去upvote和评论催微软修一下吧 https://aka.ms/AA33ywa
Hi, 我根据 @l1ken 评论的方法删去这行地址的参数后 https://github.com/shadowsocks/shadowsocks-windows/blob/98538e32c043a8d1c0cb57937c6c9a19c4d2e380/shadowsocks-csharp/Controller/Service/PACServer.cs#L54 系统就不会启动新进程了。
在我有限的测试中,本地更改完 pac 后,只要切到全局再切到 pac 模式就能更新系统 pac。不知道可不可以在软件层面做一些操作。
当然这只是不完美的 workaround,而且会使“保护本地 PAC”功能不可用。在微软修复这个问题以前,希望大神们能找到更好的方法。
@Joelism 使用这个workaround是需要改代码并重编译吗?有没有现成的fork之类的,谢谢。
@dspjm 对,我是自己拉到本地改完编译的
貌似 32Win10PRO 1809/17763.167 只见或自动变更了PID的一个了,以前机器重启才消失,现在休眠醒来那进程已不见😂😂
这个问题不知道新版的1901版的WINDOWS有没有解决。
这个问题不知道新版的1901版的WINDOWS有没有解决。
所以大家赶紧向微软报告这个bug吧
必要要反馈了,这个问题相当严重。尤其是开了几十个进程之后,对CPU跟硬盘都是负担。
请问4.13 prerelease版本中的 Fix sysproxy hanging issue 针对的是否是这个问题呢
@Feketerigo0827 release notes 里面笔误。实际上没有这个。
每运行一次,就增加78个甚至十几个进程!问题非常明显,希望微软尽快解决!
Hello,我(应该)已经解决这个问题并发布了编译后的文件,详情请看:系统出现大量HTTP Auto Proxy Detection Worker Process
没时间看的可直接下载编译好的exe测试:ShadowSocks-4.1.4-1.zip
Hello,我(应该)已经解决这个问题并发布了编译后的文件,详情请看:系统出现大量HTTP Auto Proxy Detection Worker Process
没时间看的可直接下载编译好的exe测试:ShadowSocks-4.1.4-1.zip
你好,我看到你的pr里提交的是你博客中所说的方案二。我在尝试方案一时遇到了点问题
// 文件: shadowsocks-csharp\Controller\Service\PACServer.cs
public void UpdateConfiguration(Configuration config)
{
this._config = config;
if (config.secureLocalPac)
{
// 注释掉部分
// var rd = new byte[32];
// RNG.GetBytes(rd);
// PacSecret = $"&secret={Convert.ToBase64String(rd)}";
// ----------------------------------- 以下部分 -----------------------------------
// 这部分4.1.4版本的ss中是没有的 如果要添加的话 PAC_SECRET_FILE 未声明
if (!File.Exists(PAC_SECRET_FILE))
{
var rd = new byte[32];
RNG.GetBytes(rd);
string secret = Convert.ToBase64String(rd);
PacSecret = $"secret={secret}";
File.WriteAllText(PAC_SECRET_FILE, secret);
}
else
{
PacSecret = $"secret={File.ReadAllText(PAC_SECRET_FILE)}";
}
// ----------------------------------- 以上部分 -----------------------------------
}
else
{
PacSecret = "";
}
// 注释掉部分
// PacUrl = $"http://127.0.0.1:{config.localPort}/pac?t={GetTimestamp(DateTime.Now)}{PacSecret}";
PacUrl = $"http://127.0.0.1:{config.localPort}/pac?{PacSecret}";
}
@KIRI-Z 是编译不通过的问题吗?
我博客中给出的代码不完整,你要在类中新增一个PAC_SECRET_FILE常量:
private const string PAC_SECRET_FILE = "pac-secret.txt";
@tlanyan 已解决,谢谢!
Hello,我(应该)已经解决这个问题并发布了编译后的文件,详情请看:系统出现大量HTTP Auto Proxy Detection Worker Process
没时间看的可直接下载编译好的exe测试:ShadowSocks-4.1.4-1.zip
支持加入ss官方版本,不胜其烦。别等微软了。
不需要修复了,在最新预览版18334中,只需要睡眠再唤醒,多余的pacjsworker.exe就会消失。
在19H1预览版18351和20H1预览版18850中,pacjsworker.exe的行为是一致的,旧的进程会在5分钟后自动退出。因此,将来这个issue只会影响1809这个系统版本。我觉得这个issue可以关闭了。
Fyir#Khitoe
在19H1预览版18351和20H1预览版18850中,pacjsworker.exe的行为是一致的,旧的进程会在5分钟后自动退出。因此,将来这个issue只会影响1809这个系统版本。我觉得这个issue可以关闭了。
19H1不知道要什么时候才能有正式版,而且说不定又要想1809一样延迟推送。预览版的特性能否保持到正式版也是问题。
@Feketerigo0827 如果你像我一样长期有用预览版,你就会知道,现在这个时期Fast Ring的预览版会和将来的正式版几乎无区别。目前的18362极有可能成为1903的正式build。
1809版本可以用脚本杀掉这个进程树。(仅供强迫症用户使用
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
$list = Get-Process -Name pacjsworker
if($list.Length -gt 0){
$childId = $list[0].Id
$instance = Get-CimInstance Win32_Process -Filter "ProcessId = '$childId'"
$parent = Get-Process -Id $instance.ParentProcessId
Start-Process $parent.Kill() -Verb runAs
}
1903来了

1903来了
面向普通用户推送是五月下旬。
😋非普通用户一枚?
见到有网友安装后蓝屏或者安装过程中回滚了,win10每次更新都让人惊喜
(十一、二年的老机器)一次过。。。

见到有网友安装后蓝屏或者安装过程中回滚了,win10每次更新都让人惊喜
这种通常都是用户程序/驱动的问题多。我台式和sbook基本都能正常升级。
1903依然也有这个问题,测试过了
测试了一下,该问题在 Windows 10 1903的表现是,一段时间后(5分钟?10分钟?)多余的进程会自动消失:

一段时间后:

emmmm 确实,1903,5分钟左右就消失了。
关于1903的安装包,msdn已经放出来了,可以去msdn i tell you 下载~
Most helpful comment
Hello,我(应该)已经解决这个问题并发布了编译后的文件,详情请看:系统出现大量HTTP Auto Proxy Detection Worker Process
没时间看的可直接下载编译好的exe测试:ShadowSocks-4.1.4-1.zip