激活 KD 连接服务器

Windows 调试工具中包含的 KD 连接服务器称为 KdSrv(kdsrv.exe)。 若要激活 KD 连接服务器,请打开提升的命令提示符窗口(以管理员身份运行),并输入 kdsrv 命令。

注意 无需提升权限即可激活 KD 连接服务器,并且调试客户端将能够连接到服务器。 但是,客户端将无法发现 KD 连接服务器,除非它已使用提升的权限激活。 有关如何发现调试服务器的信息,请参阅 搜索 KD 连接服务器

重要

使用远程调试时,有一些重要的安全注意事项。 有关详细信息,包括有关启用安全模式的信息,请参阅远程调试 期间 安全性,以及 Windows 调试工具安全注意事项。

KdSrv 支持多种传输协议:命名管道(NPIPE)、TCP、COM 端口、安全管道(SPIPE)和安全套接字层(SSL)。

KdSrv 命令行的语法取决于所使用的协议。 存在以下选项:

建议的连接方法,并提供了一些额外的安全性

kdsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password] 

kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password] 

kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password] 

不安全的连接方法

kdsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] 

kdsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] 

kdsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] 

kdsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password] 

参数

上述命令中的参数具有以下可能的值:

pipe=PipeName
使用 NPIPE 或 SPIPE 协议时,PipeName 是将用作管道名称的字符串。 每个管道名称应标识唯一的进程服务器。 如果尝试重复使用管道名称,将收到错误消息。 PipeName 不得包含空格或引号。 PipeName 可以包含数字 printf样式格式代码,例如 %x%d。 这将替换为 KdSrv 的进程 ID。 第二个此类代码将替换为 KdSrv 的线程 ID。

端口=套接字
使用 TCP 或 SSL 协议时,套接字 是套接字端口号。

还可以指定用冒号分隔的端口范围。 KdSrv 将检查此范围中的每个端口,以查看它是否是免费的。 如果发现可用端口且未发生错误,则会创建 KD 连接服务器。 智能客户端必须指定用于连接到服务器的实际端口。 若要确定实际端口,请使用 搜索 KD 连接服务器中所述的任何方法;显示此 KD 连接服务器时,端口后跟两个数字,用冒号分隔。 第一个数字将是使用的实际端口;可以忽略第二个。 例如,如果将端口指定为 port=51:60,并且实际使用了端口 53,则搜索结果将显示“port=53:60”。 (如果使用 clicon 参数建立反向连接,智能客户端可以按这种方式指定端口范围,而 KD 连接服务器必须指定使用的实际端口。

clicon=客户端
使用 TCP 或 SSL 协议并指定 clicon 参数时,将打开 反向连接。 这意味着 KD 连接服务器将尝试连接到智能客户端,而不是让客户端启动联系人。 如果你的防火墙阻止了往常的连接,这非常有用。 客户端 指定智能客户端所在的计算机的网络名称或 IP 地址。 两个初始反斜杠 (\) 是可选的。

由于 KD 连接服务器正在寻找一个特定的客户端,因此如果使用此方法,则无法将多个客户端连接到服务器。 如果连接被拒绝或断开,则必须重启进程服务器。 当有人使用 -QR 命令行选项显示所有活动服务器时,将不会显示反向连接 KD 连接服务器。

注意 使用 clicon 时,最好在创建 KD 连接服务器之前启动智能客户端,尽管也允许通常的顺序(客户端之前服务器)。

port=COMPort
使用 COM 协议时,COMPort 指定要使用的 COM 端口。 前缀“COM”是可选的 -- 例如,“com2”和“2”都是可接受的。

baud=BaudRate
使用 COM 协议时,BaudRate 指定连接将运行时的波特率。 允许硬件支持的任何波特率。

channel=COMChannel
如果使用 COM 协议,COMChannel 指定要用于与调试客户端通信的 COM 通道。 此值可以是介于 0 和 254 之间的任意值(包括 0 和 254)。 可以使用不同的通道编号将单个 COM 端口用于多个连接。 (这不同于对调试电缆使用 COM 端口 -- 在这种情况下,不能在 COM 端口中使用通道。

proto=协议
如果使用 SSL 或 SPIPE 协议,协议 指定安全通道(S 通道)协议。 这可以是任一字符串 tls1、pct1、ssl2 或 ssl3。

证书
如果使用 SSL 或 SPIPE 协议,证书 指定证书。 这可以是证书名称或证书的指纹(证书管理单元提供的十六进制数字字符串)。 如果使用语法 certuser=证书,调试器将在系统存储(默认存储)中查找证书。 如果使用语法 machuser=证书,调试器将在计算机存储中查找证书。 指定的证书必须支持服务器身份验证。

隐藏
当有人使用 -QR 命令行选项显示所有活动服务器时,阻止 KD 连接服务器出现。

password=密码
要求智能客户端提供指定的密码才能连接到 KD 连接服务器。 密码 可以是任意字母数字字符串,长度最多为 12 个字符。

重要

将密码与 TCP、NPIPE 或 COM 协议配合使用仅提供少量的保护,因为密码未加密。 将密码与 SSL 或 SPIPE 协议一起使用时,密码将加密。 如果要建立更安全的远程会话,必须使用 SSL 或 SPIPE 协议。

ipversion=6
(仅适用于 Windows 6.6.07 和更早版本的调试工具)使用 TCP 连接到 Internet 时,强制调试器使用 IP 版本 6 而不是版本 4。 在 Windows Vista 和更高版本中,调试器会尝试自动默认为 IP 版本 6,因此不需要此选项。

IcfEnable
使调试器在 Internet 连接防火墙处于活动状态时为 TCP 或命名管道通信启用必要的端口连接。 默认情况下,Internet 连接防火墙会禁用这些协议使用的端口。 IcfEnable 与 TCP 连接一起使用时,调试器会导致 Windows 打开由 Socket 参数指定的端口。 当 IcfEnable 与命名管道连接一起使用时,调试器会导致 Windows 打开用于命名管道的端口(端口 139 和 445)。 连接终止后,调试器不会关闭这些端口。