Javascript 如何获取/访问浏览器(IE等)的证书状态/信息

Javascript 如何获取/访问浏览器(IE等)的证书状态/信息,javascript,xmlhttprequest,certificate,activex,Javascript,Xmlhttprequest,Certificate,Activex,我想安装一个受信任的根证书。现在,我创建了一个batch/exe文件,只需单击它即可安装证书。现在,我想附加一个网页,该网页将自动下载/运行exe/batch并安装它。现在,这一部分也通过以下代码完成(它作为activex对象工作): 函数fnShellExecuteJ() { var objShell=newActiveXObject(“Shell.Application”); ShellExecute(“D:\\New folder\\New folder\\RootInstaller.e

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


函数fnShellExecuteJ()
{
var objShell=newActiveXObject(“Shell.Application”);
ShellExecute(“D:\\New folder\\New folder\\RootInstaller.exe”、“”、“”、“open”、1);
}
现在,我想检查证书是否已安装?如果根证书安装在“IE>工具>Internet选项>内容>证书>受信任的根证书颁发机构”中,则它不会尝试打开安装程序并跳过。但是,如果没有安装,它将尝试安装

总之,我想检查已安装证书的状态,然后根据该状态继续下一步


谢谢你读这篇文章(我的英语很糟糕)。任何建议/提示/写作都会对这位新来者有所帮助。谢谢你……

这取决于你想如何实施它

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

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

对于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' );
}

非常感谢您的回复。我认为CertFindCertificateInStore或CAPICOM对我的情况都没有帮助。我想从我创建的batch/EXE安装证书。因此,受信任的activex对象进程无法完成。我想要的只是一种方式,我的证书“Root X”是否安装在浏览器中?如果已安装,则跳过;如果未安装,则安装。。。。。。。但非常感谢您的回复。我是一个新手开发人员,所以我不知道我是否可以解释所有方面(请原谅我)。。。。。。
var MyObj;
try {
    MyObj = new ActiveXObject( "MyActiveX" );
    alert( 'my object exist' );
} catch( err ) {
    alert( 'my object do not exist' );
}