如何以编程方式确定Windows服务器中启用的SSL/TLS协议

Lau*_*nce 5 c# ssl cryptography wcf-security tls1.2

特定Windows服务器支持哪些SSL或TLS协议以及哪些已启用,都存储在注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Run Code Online (Sandbox Code Playgroud)

.NET是否包含枚举和检查这些协议的任何简单方法,因此在服务器上运行的应用程序可以确定哪些已启用?

我知道我可以查询注册表,但是存在以下问题:

  1. 在服务器重新启动之前,对这些注册表项的更改不会生效 - 我需要知道当前正在使用的协议
  2. 目前尚不清楚各种价值观有何影响.有一个DisabledByDefault值和一个Enabled值 - 大多数文章说0和1表示协议已启用,但1和1是什么意思?有些文章容易引起混淆,表明Enabled应该是0xffffffff而不是1.