【问题标题】:AccessViolationException & HandleProcessCorruptedStateExceptions in PowerShellPowerShell 中的 AccessViolationException 和 HandleProcessCorruptedStateExceptions
【发布时间】:2018-02-13 16:23:31
【问题描述】:

在事件查看器中我看到了错误(此处缩短):

说明:进程因未处理的异常而终止。

异常信息:System.AccessViolationException 在 CertStore.Win32Utils.CertEnumCertificatesInStore(IntPtr, IntPtr)

我知道您无法在自 4.0 以来的任何 .NET 版本上捕获 AccessViolationException,这是设计使然。我找不到有关如何在 PowerShell 中处理它的文档

我的问题是如何捕获此异常并阻止它完全使我的脚本崩溃?在 C# 和其他语言中,我可以使用 [HandleProcessCorruptedStateExceptions],但我在 PowerShell 中找不到此类的任何文档。

提前谢谢你!

【问题讨论】:

    标签: powershell access-violation corrupted-state-exception


    【解决方案1】:

    我不知道如何捕获异常,但看起来您正在使用证书存储,这导致了异常。我的问题是尝试枚举证书存储然后打开它会引发访问冲突异常。通过添加“只读”标志,我能够绕过违规错误,并对任何其他错误使用正常的 try catch。

        $store = New-Object System.Security.Cryptography.X509Certificates.X509Store($computer, "LocalMachine") 
    #Read only flag that fixed it.
        $store.Open("ReadOnly")
        $certs = $store.Certificates
        $store.Close();
    

    【讨论】:

    • 关于证书存储的问题,您说得对。我如此着迷于捕捉无法捕获的错误,以至于我完全忽略了获取数据的其他方法!这确实有效!谢谢!
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多