You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows系统中以编程方式注册扩展验证OID?

编程方式注册扩展验证OID的方法

PowerShell脚本实现

扩展验证OID的注册信息存储在系统注册表中,可通过PowerShell直接操作注册表完成自动化注册:

# 定义要注册的OID信息
$oidValue = "1.2.3.4.5.6.7.8" # 替换为你的目标OID
$displayName = "自定义扩展验证OID" # 替换为该OID的显示名称

# 构建注册表路径
$regPath = "HKLM:\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertExtension\$oidValue"

# 创建注册表项(如果不存在)
if (-not (Test-Path $regPath)) {
    New-Item -Path $regPath -Force | Out-Null
}

# 设置必要的注册表键值
Set-ItemProperty -Path $regPath -Name "DisplayName" -Value $displayName -Type String
Set-ItemProperty -Path $regPath -Name "OIDType" -Value 2 -Type DWord # 2表示证书扩展类型
Set-ItemProperty -Path $regPath -Name "ExtensionFlags" -Value 0x20000 -Type DWord # 0x20000标记为关键扩展(可根据需求调整)

执行该脚本需要管理员权限,完成后系统会识别该OID为合法的证书扩展,效果与certmgr.msc手动注册一致。

Win32 API实现

可使用Crypt32.dll中的CertRegisterOIDInfo函数完成OID注册,以下是C++示例代码:

#include <windows.h>
#include <wincrypt.h>
#pragma comment(lib, "crypt32.lib")

int main() {
    OID_INFO oidInfo = {0};
    oidInfo.dwOIDType = OID_TYPE_CERT_EXTENSION;
    oidInfo.pwszOID = L"1.2.3.4.5.6.7.8"; // 替换为目标OID
    oidInfo.pwszName = L"自定义扩展验证OID"; // 替换为显示名称
    oidInfo.dwGroupId = CRYPT_OID_GROUP_CERT_EXTENSION;

    // 注册OID信息
    BOOL result = CertRegisterOIDInfo(&oidInfo, CERT_REGISTER_OID_INFO_FLAG_NONE);
    if (result) {
        MessageBox(NULL, L"OID注册成功", L"提示", MB_OK);
    } else {
        DWORD err = GetLastError();
        MessageBox(NULL, L"OID注册失败", L"错误", MB_OK | MB_ICONERROR);
    }

    return 0;
}

该程序需要以管理员权限运行,CertRegisterOIDInfo会自动将OID信息写入对应注册表位置,系统会立即加载该OID配置。

内容的提问来源于stack exchange,提问作者Solocle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:55:01