gpt4 book ai didi

go - 如何使用 Go 检索本地计算机 Windows 证书存储列表?

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:12 25 4
gpt4 key购买 nike

Go 允许您使用以下命令非常轻松地检索当前用户的个人 Windows 证书存储句柄:

store, err := syscall.CertOpenSystemStore(0, syscall.StringToUTF16Ptr("MY")) // Personal Certificates

但是,当我尝试检索本地计算机个人证书存储时,我总是以空存储句柄和未找到存储的异常或错误 CRYPT_E_NOT_FOUND 结束。

或者,您可以使用此方法:

    store, err := syscall.CertOpenStore(
windows.CERT_STORE_PROV_SYSTEM,
0,
0,
windows.CERT_SYSTEM_STORE_CURRENT_USER,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("MY"))))

但是当我换出本地机器存储的值时,我开始看到上面提到的错误。

如何使用 Go 在 Windows 中成功检索本地计算机证书存储?

最佳答案

您确实使用上面评论中提到的以下代码片段来检索证书:

    store, err := syscall.CertOpenStore(
windows.CERT_STORE_PROV_SYSTEM,
0,
0,
windows.CERT_SYSTEM_STORE_LOCAL_MACHINE,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("MY"))))

但是这里发生了一些事情,具体说明了为什么它最初没有工作:

  1. 您必须以管理员身份运行程序,否则商店将返回 0。
  2. 我没有以管理员身份运行 VS Code:我以为我是,但你必须杀死所有实例才能这样做!
  3. 检索最后一个错误的代码在 Go 中的这种情况下似乎不起作用,但当我切换到使用 C++ 工作时,我确实看到了访问被拒绝的错误。

关于go - 如何使用 Go 检索本地计算机 Windows 证书存储列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com