Home > Windows にまつわる e.t.c.

CAPI2 513 エラー対策


Windows Server 2016 で OS 標準の Windows Server Backup でバックアップをすると、CAPI2(Microsoft-Windows-CAPI2) 513 エラーが発生します。

暗号化サービスで、システム ライター オブジェクトで OnIdentity() の呼び出しを処理中にエラーが発生しました。

Details:
AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol.

System Error:
アクセスが拒否されました。

 

このエラー自体は大したことないのですが、僕が試した限り Windows Server 2016 はどうやらこのエラーが確実に起きるようです。(Windows Server 2012 R2 以前ではあまり起きない)

サポート情報を見ると KB3193007 に対策方法がありました。

イベント 513, CAPI2 のエラーログが記録される
https://support.microsoft.com/ja-jp/kb/3193007

 

この手順だとちょっと手間ですし、Windows Server 2016 を構築する都度この手順を繰り返すのは面倒なので、PowerShell でサクッと設定できるように関数にしました。(要管理権限)

#################################################
# CAPI2 513 エラー対策
#################################################
function StopCapi2Error(){
    [array]$ACLs = cmd /c sc sdshow mslldp
    if(($ACLs.Length -gt 2) -or ($ACLs -match "FAILED")){
        echo "[FAIL] sc sdshow mslldp の戻り値が想定外の値になっています"
        echo $ACLs
    }
    else{
        if( $ACLs[0] -eq "" ){
            # 1行目が空行の場合
            $ACL = $ACLs[1]
        }
        else{
            # 1行目に値が入っている場合
            $ACL = $ACLs[0]
        }

        if( $ACL -match "\(A;;CCLCSWLOCRRC;;;SU\)"){
            echo "[INFO] ACL 設定済みです"
        }
        else{
            # AUTHORITY\SERVICE を追加する
            $NewACL = $ACL + "(A;;CCLCSWLOCRRC;;;SU)"
            cmd /c sc sdset mslldp $NewACL

            # cryptsvc を再起動する
            Restart-Service cryptsvc
            
            echo "[INFO] ACL 設定完了"
        }
    }
}

# 関数実行
StopCapi2Error

 

Windows Server 2016 で Windows Server Backup をする場合は、構築時にこいつで ACL 設定するとエラーが出なくなります。

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.