我想知道是否可以(以及如何)使用JavaScript从Web浏览器进行一些Win32 API调用。我目前对此问题的理解使我得出结论,我需要某种ActiveX控件,然后可以使用它来轻松地进行所需的调用。然而,整个网络上的文章读数警告我,使用ActiveX不会是跨浏览器的解决方案。现在我不想强迫我的用户只使用IE,据我所知,这是唯一支持ActiveX的浏览器。我确实希望只为Windows用户提供此功能。
我想要的是获取当前登录的用户及其SID并将此信息发送到Web应用程序,Web应用程序将处理此数据,将其存储到数据库等。此外,我可能需要一些调用才能访问硬件加密设备连接到客户端计算机(即带有证书的USB令牌)。
如何获得这个?我是否需要为每个Web浏览器编写单独的插件?如果这一切都可以用C#完成,那将是首选,但本机C ++对我来说并不陌生,所以如果第一个不可能,我可以回到后者。
答案 0 :(得分:1)
如果没有在客户端计算机上运行的特定于浏览器的插件(ActiveX控件可以执行此操作),则无法提出要求。
ActiveX主要是一种仅限InternetExplorer的技术,但过去曾有插件向其他浏览器添加ActiveX支持。不确定他们中的任何一个都能幸存下来。但无论哪种方式,ActiveX都是仅限Windows的技术,因此它无法在其他平台上运行。
目前浏览器技术的趋势是尝试尽可能多地从插件中移动AWAY,而不是依赖于内置于HTML5和JavaScript本身的功能。
AFAIK,我唯一能想到的跨浏览器解决方案是使用签名的Java小程序通过JNI加载DLL:
Load .DLL with applet and use it on client
然而,Java applet不再受欢迎,而不是Flash和HTML5,甚至一些浏览器现在默认禁用Java。因此,如果您试图针对广泛的受众群体,我认为这不是一个非常可行的解决方案。但对于孤立的受众,这可能是一个可行的选择。