windows - 如何在从 Windows 服务启动的子外壳中设置 http 代理

标签 windows http proxy service authenticode

我正在编写一个 Windows 服务,它接受一个上传的文件,在其上运行 signtool.exe 来进行签名和时间戳,然后返回签名文件。

此代码在使用 twisted 作为独立服务器运行时有效,但是如果我尝试将其作为服务运行,它会失败并显示错误“签名成功,但在尝试时间戳时发生错误”。

如果我用显式使用代理的 curl.exe 调用替换 signcode 子进程调用,那么这会成功。

我已经在 Internet Explorer 中设置了代理并手动运行命令。是否有另一种为 signtool/signcode 设置 http 代理的方法或另一种方法(我希望它成为一种易于集成到其他一些监控系统的服务)?

最佳答案

我有同样的问题,但通过 cygwin ssh(使用密码)运行 signtool。如果我通过 gui 至少登录一次(例如通过 rdesktop),时间戳只能通过代理和 ssh 工作。之后我什至不必登录到 gui 就可以通过 ssh 工作,我只需要确保至少通过 gui 登录一次。无论它在图形登录时做什么,都可以在重新启动后继续存在。然而,一个区别是我使用与通过 ssh 启动的相同的 powershell 动态设置代理设置:

$reg_key = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Set-ItemProperty -path $reg_key ProxyServer -value 192.168.0.3:8888
Set-ItemProperty -path $reg_key ProxyOverride -value "<local>"
Set-ItemProperty -path $reg_key ProxyEnable -value 1

我尝试从 ssh 启动 explorer.exe &、记事本 & 和 iexplorer.exe & 但没有帮助。我将了解如何对代理设置进行硬编码,以及是否有可能让签名用户在引导后登录到 gui。还将检查以确保使用 cygrunsrv -i 启动了 ssh,或者在服务中检查了它是否允许与桌面交互。

如果系统停止(vmware delta image)(这就是我能够重现问题的方式),系统会恢复其图像,但我可以随时更改它,看起来我可能必须这样做才能解决这个问题.

终于在评论的帮助下弄明白了:

http://blogs.msdn.com/b/askie/archive/2013/05/09/user-proxy-settings-showing-up-in-local-system-account-correct-way-to-apply-proxy-settings.aspx#10606266

看起来设置实际上必须在二进制文件中设置:

HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings

此二进制文件直到图形登录后才会在注册表中创建,即使使用我上面所做的 powershell 设置也是如此。最简单的方法是登录(假设你有我上面用 powershell 做的注册表设置,或者通过 gui 中的 internet 选项 ui 手动设置),导出 HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections 路径,并将其导入:

regedit /s path_to_proxy_settings.reg

如果您希望它适用于所有用户,您需要在以下位置应用相同的文件:

HKEY_LOCAL_MACHINE\\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections

如帖子中所述。可能还有这里提到的其他方式https://serverfault.com/questions/34940/how-do-i-configure-proxy-settings-for-local-system ,但以上对我来说是最简单的。

关于windows - 如何在从 Windows 服务启动的子外壳中设置 http 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102772/

相关文章:

angularjs - 装饰 Angular 的 $log 以使用使用 $http 的服务

c# - Vista 上的 WebProxy 和身份验证

c++ - 使用其他目录中的库构建项目。 Windows , MinGW

windows - 来自 Win10 和 Ubuntu WSL 的 Git 提交 - 如何处理文件执行模式更改?

Java Spring 框架,在请求结束之前开始使用 HTTP 请求体

apache - 我可以将一些确切的远程 URL 映射到具有不同端口的本地 URL

python - 如何使用 werkzeug 或其他 python 请求框架制作非常简单的 http 代理?

windows - Windows 的 CVDisplayLink 替代品?

python - pip:了解丢失的库转储

http - 使用 httputil 和 gorilla/mux 进行反向代理