CRYPT_NEWKEYSETで CryptAcquireContextを呼び出す実行可能ファイルがあります。
BOOL b_result;
HCRYPTPROV prov;
b_result = CryptAcquireContext(&prov, L"testcontext6", MS_DEF_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
if(!b_result) {
int err = GetLastError();
fprintf(stderr, "Error acquiring context: %#x\n", err);
return 1;
}
return 0;
これをローカルで実行すると、正常に動作します。次のように WMI 経由で実行すると、エラー 0x5 (ERROR_ACCESS_DENIED) が返されます。
using (var processClass = new ManagementClass(m_scope, new ManagementPath("Win32_Process"), new ObjectGetOptions()))
{
var inParams = processClass.GetMethodParameters("Create");
inParams["commandLine"] = @"cmd.exe /c C:\CppTest.exe 2>C:\test.log";
var outParams = processClass.InvokeMethod("Create", inParams, null);
return outParams["ProcessId"];
}
WMI の下の環境は、どういうわけか制限が厳しく、新しいキー コンテナーの作成が停止しているようです。これが考えられる理由と、それを回避する方法についての提案はありますか?