Javascript&;ActiveXObject在HTA中间歇性工作

Javascript&;ActiveXObject在HTA中间歇性工作,javascript,hta,activexobject,Javascript,Hta,Activexobject,我有一个HTA文件,其中包含加载时执行的javascript,用于拉用户网络登录: var WinNetwork = new ActiveXObject("WScript.Network"); return WinNetwork.UserName; 当我第一次打开HTA文件时,我收到一个运行时错误: “自动化服务器无法创建对象” 在上面代码的第一行。我排除错误并关闭HTA窗口 如果在关闭后的几秒钟内重新启动HTA文件,它将正常工作,并获得用户名值。如果我将它保留几分钟,然后再次启动它,则会返回

我有一个HTA文件,其中包含加载时执行的javascript,用于拉用户网络登录:

var WinNetwork = new ActiveXObject("WScript.Network");
return WinNetwork.UserName;
当我第一次打开HTA文件时,我收到一个运行时错误:

“自动化服务器无法创建对象”

在上面代码的第一行。我排除错误并关闭HTA窗口

如果在关闭后的几秒钟内重新启动HTA文件,它将正常工作,并获得用户名值。如果我将它保留几分钟,然后再次启动它,则会返回错误。我每次尝试都能重复这些结果

有人知道为什么第一次这样不行吗?我该怎么解决呢?谢谢

编辑:感谢您迄今为止的回答,但这是一个HTA,不在IE中运行,安全设置不相关

发件人: HTML应用程序(HTA)是一个Microsoft Windows程序,其源代码由HTML、动态HTML和Internet Explorer支持的一种或多种脚本语言(如VBScript或JScript)组成。HTML用于生成用户界面,脚本语言用于程序逻辑。HTA执行时不受internet浏览器安全模型的约束;事实上,它作为“完全受信任”的应用程序执行。


<script>
  (function() {
    var shell;

    try {
      shell = new ActiveXObject('WScript.Shell');
    } catch(e) {
      return alert("Couldn't create the script shell :(");
    }

    function getEnv(id){ return shell.Environment("Process").item(id); }

    var username = getEnv("USERNAME");

    alert("Hello, " + username + ".");
  })();
</script>
(功能(){ var外壳; 试一试{ shell=newActiveXObject('WScript.shell'); }捕获(e){ 返回警报(“无法创建脚本shell:(”); } 函数getEnv(id){返回shell.Environment(“Process”).item(id);} var username=getEnv(“用户名”); 警报(“你好,“+username+”); })();
可能的重复不是重复,与CertEnroll.dll无关,我使用的是HTA shell而不是IE浏览器,因此浏览器安全设置不相关。您可以这样读取用户名吗?其他ActiveX如何,您可以使用它们吗?如果可以,并且用户名是您唯一需要的,您也可以使用shell:
user检索它=新的ActiveXObject('WScript.Shell').ExpandEnvironmentString('%username%');
你能展示更多你的hta吗?我试着根据你的描述重新处理这个问题,但每次我运行它,它都能正常工作。