2015-07-15 2 views
2

У меня есть файл HTA, содержащий JavaScript выполняется при загрузке спустить пользователей входа в сеть:Javascript и ActiveXObject работает с перерывами в ОМТ

var WinNetwork = new ActiveXObject("WScript.Network"); 
return WinNetwork.UserName; 

Когда я первый открыть файл HTA, я получаю сообщение об ошибке выполнения:

"The automation server can't create object"

в первой строке кода выше. Я отклоняю ошибку и закрываю окно HTA.

Если я заново запустил файл HTA за несколько секунд после закрытия, он работает без ошибок, и я получаю значение UserName. Если я оставлю его на несколько минут и снова запустим его, ошибка вернется. Я мог повторять эти результаты каждый раз, когда я пытался.

Кто-нибудь знает, почему это не работает в первый раз? И как я могу это решить? Спасибо

Редактировать: Спасибо за ваши ответы до сих пор, но это HTA и не запущен в IE, настройки безопасности не актуальны.

от https://en.wikipedia.org/wiki/HTML_Application: Приложение HTML (HTA) представляет собой программу Microsoft Windows, исходный код которой состоит из HTML, динамического HTML и одного или нескольких языков сценариев, поддерживаемых Internet Explorer, таких как VBScript или JScript. HTML используется для создания пользовательского интерфейса, а язык сценариев используется для логики программы. HTA выполняется без ограничений модели безопасности интернет-браузера; Фактически, он выполняется как «полностью доверенное» приложение.

+0

возможно дубликат [IE9, сервер автоматизации не может создать ошибку объекта при использовании CertEnroll.dll] (http://stackoverflow.com/questions/15686040/ie9-automation-server-cant-create-object -error-while-using-certenroll-dll) –

+0

не дубликат, не имеет никакого отношения к CertEnroll.dll, и я использую оболочку HTA, а не браузер IE, поэтому настройки безопасности браузера не актуальны. –

+0

Можете ли вы прочитать имя пользователя таким образом? http://stackoverflow.com/questions/14276032/hta-html-application-vbscript-reading-textfile-line-and-colouring-that-line-on – BoltBait

ответ

0
<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>