在LSA下运行的服务内部执行时,CryptDecryptMessage返回CRYPT_E_NO_DECRYPT_CERT

时间:2019-03-19 20:49:50

标签: c windows service certificate cryptoapi

我在LocalMachine /我的商店中创建了带有私钥的RSA证书。

然后我用C语言创建了一个简单的Windows控制台应用程序,用于:

  • 通过指纹找到证书
  • 使用crosstab
  • 加密缓冲区
  • 将缓冲区写到文件中

然后我用C语言编写了一个小型服务应用程序:

  • 读取缓冲区
  • 使用s1 = pd.crosstab(df.Method, [df.ID, df.Value]).stack().fillna(0) s = pd.concat([y.sum(level=0).append(y) for x, y in s1.groupby(level=0)]) s=s.sum().div(2).to_frame('Total').T.append(s) s #s.index=[x[-1]if type(x)==tuple else x for x in s.index.tolist() ] Out[913]: ID 01 02 03 Total 1.0 2.0 2.0 Advanced 0.0 1.0 2.0 (Advanced, CD) 0.0 0.0 1.0 (Advanced, CR) 0.0 0.0 0.0 (Advanced, PD) 0.0 1.0 1.0 Basic 1.0 1.0 0.0 (Basic, CD) 0.0 0.0 0.0 (Basic, CR) 1.0 1.0 0.0 (Basic, PD) 0.0 0.0 0.0 解密

只要服务应用程序不在本地系统帐户(LSA)下运行,一切都可以正常工作。在这种情况下,CryptEncryptMessage会生成CryptDecryptMessage。尽管证书位于LocalMachine / My

我试图尽可能地减少代码,但是它仍然很长。我希望有一些错误的标志设置。还是这种预期的行为?感谢您的关注。

Windows控制台应用程序

CryptDecryptMessage

Windows服务应用程序

CRYPT_E_NO_DECRYPT_CERT (0x8009200C)

0 个答案:

没有答案