0

我想安装一个受信任的根证书。现在,我制作了一个批处理/exe 文件,只需单击它即可安装证书。现在,我想将文件附加到一个网页,该网页将自动下载/运行exe/batch并安装它。现在,这部分也通过以下代码完成(它作为 activex 对象工作):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!-- saved from url=(0014)about:internet -->


<SCRIPT Language="JScript">



function fnShellExecuteJ()

{

var objShell = new ActiveXObject("Shell.Application");

objShell.ShellExecute("D:\\New folder\\New folder\\RootInstaller.exe", "", "", "open", 1);

}

<HTML>

</SCRIPT> 

<BODY>


<body onLoad="javascript:fnShellExecuteJ();"> 

</BODY>

</HTML>

现在,我想检查证书是否安装?如果根证书安装在“IE>工具>Internet选项>内容>证书>受信任的根证书颁发机构”中,则不会尝试打开安装程序并跳过。但是,如果它没有安装,那么它会尝试安装。

总之,我想检查已安装的证书状态,然后在此基础上继续下一步。

感谢您阅读本文(我的英语很糟糕)。任何建议/提示/写作都会帮助这个新人。谢谢.....

4

1 回答 1

0

这真的取决于你想如何实现它。

确定特定证书存储中是否存在证书的“规范”方法是使用 API:使用 CertOpenStore打开特定存储后的 CertFindCertificateInStore(Windows 上有多个证书存储)。

现在,问题在于这是 C/C++ 代码,您必须将其嵌入 ActiveX(或类似的)中。对于 Windows 7 和 8,我认为您无法避免这种情况。

对于 Windows 7 之前的版本(Windows XP、Windows Vista),Microsoft 有一个名为 CAPICOM 的组件,它允许脚本访问加密。如果您的客户端只有 XP/Vista,您可以使用它,然后从您页面上的 JavaScript 调用 CAPICOM(您的用户必须安装它)。

但是,如果您在用户的计算机上运行可执行文件(以安装证书),为什么不简单地安装受信任的 ActiveX 对象(或 BHO)——您可以在 JavaScript 页面中测试它是否存在。

那是:

var MyObj;
try {
    MyObj = new ActiveXObject( "MyActiveX" );
    alert( 'my object exist' );
} catch( err ) {
    alert( 'my object do not exist' );
}
于 2012-10-31T09:49:19.430 回答