1

Тема: HTA: Обработка ошибки

Здравствуйте уважаемые форумчане, есть следующий скрипт для поиска смены логона на удаленном ПК, в нашем домене, есть 2 организации, к 1 из них у нас нет доступа и мы не имеем доступа к их ПК. Пытаюсь закрыть ошибки в этом скрипте, она возникает на 58 строчке и пишет разрешение отклонено, сделал чтобы вывод ошибки шел в строчку лога, но ошибка туда выводится через раз - т.е. 1 раз она пишет в лог, а 2 раз вылетает ошибкой. Как это исправить?

<HTML>
<HEAD>
<TITLE>ProgPC</TITLE>
<HTA:APPLICATION ID="Prog"
/>

<SCRIPT LANGUAGE="JScript">
self.resizeTo(900,560); // To make the window XXXX pixels wide and YYYYY pixels tall 
</SCRIPT>

<style>
#PreBottomLogs{background-color:yellow;height:20px;width:68%;border: 1px solid #aaa;}
</style>

<SCRIPT Language="VBScript">

	'---------------------------------------------------
	' Обработчик ошибок
	'---------------------------------------------------
	function Fail_Host()
	 if (ComputerName.value = "") then
		PreBottomLogs.innerHTML = PreBottomLogs.innerHTML & "BAD HOST GO away!"
		exit function
		end if
	End Function
	
	function ShowError()
		if (ComputerName.value = "") then
		Fail_Host
		PreBottomLogs.innerHTML = PreBottomLogs.innerHTML & "Error #" & err.Number & ": " & Err.Description & " " & Err.Source
		Err.Clear
		end if
	End Function
	
	'---------------------------------------------
	' Обработчик WinLogon
	'---------------------------------------------
	Sub HandlerWL
		strComputer = ComputerName.value
		If (strComputer = "") Then
			ShowError
		else
			PreBottomLogs.innerHTML = ""
		dim  sid, subkeys, path, acct, strDomainName, strAccName, WSHShell
		dim userPath,userValueName,userValue
		Const HKLM = &h80000002
		Const profiles = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
		Set WSHShell = CreateObject("WScript.Shell")
		If Err.Number <> 0 Then 'Обработка ошибки, прерываем выполнение'
			vuvodError = "Доступ отклонён!"
			PreBottomLogs.innerHTML = PreBottomLogs.innerHTML & "ERROR: " & vuvodError
			
			On Error GoTo 0
		else
		On Error Resume Next
			On Error GoTo 0
		PreBottomLogs.innerHTML = ""
		Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
		Set oReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
		oReg.EnumKey HKLM, profiles, subkeys
		'Чтение текущего пользователя в Автологоне - DefaultUserName
			userPath = "Software\Microsoft\Windows NT\CurrentVersion\Winlogon\"
			userValueName = "DefaultUserName"
			oReg.GetStringValue HKLM,userPath,userValueName, userValue	
		For Each sid In subkeys
			path = WSHShell.ExpandEnvironmentStrings(path)
			oReg.GetStringValue HKLM, profiles & "\" & sid, "ProfileImagePath", path
				Set acct = objWMIService.Get("Win32_SID.SID='" & sid & "'")
				strDomainName = strDomainName & acct.ReferencedDomainName & "<br>" & VbCrLf
				strAccName= strAccName & acct.AccountName &  "<br>" & VbCrLf
		Next
		'-----------------------------Result----------------------------------------------------------
		strHTML = "<table style='border-collapse: collapse' bgcolor=#F5F5F5>"  &_
		"Введите логин пользователя и домен для ПК " & strComputer & "<br>" & "Текущий:" & userValue & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" &_
		"<input type='button' class='button' onclick = 'RemoteSC_WinLogonVLXP()' value='Обновить список пользователей ПК'>" &_
			"<br>"		&_
			"<tr><td><input type='text' id='LogonWL'  	name='LogonWL'    value=''>Введите логон </td></tr>" &_
			"<tr><td><input type='text' id='DomainWL' 	name='DomainWL'   value='Mechel'>Введите домен </td></tr>"&_
			"<tr><td><input type='button' class='button' onclick = '	WinLogonVLXP()'   value='Изменить имя'></td></tr>"&_
			"<tr><td>Учетная запись</td><td>Домен</td></tr>" &_
			"<tr><td>" &strAccName & "</td><td>" & strDomainName & "</td></tr>"
		strHTML = strHTML & "</table>"
		DataArea.InnerHTML = Trim(strHTML)
	End If
		end if
	End sub
</SCRIPT>
</HEAD>

<BODY>
Компьютер 
<input type="text" name="computername" size="18" id="computername" >
<input type="button" name="start" onclick="handlerwl()" value="handlerwl" >
<div id="dataarea">

</div>

<span id="PreBottomLogs" title="логи"></span>

</BODY>
</HTML>

2

Re: HTA: Обработка ошибки

		If Err.Number <> 0 Then 'Обработка ошибки, прерываем выполнение'
			vuvodError = "Доступ отклонён!"
			PreBottomLogs.innerHTML = PreBottomLogs.innerHTML & "ERROR: " & vuvodError
			
			On Error Goto 0
		Else
		On Error Resume Next
			On Error Goto 0
		PreBottomLogs.innerHTML = ""
		Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

>>

		On Error Resume Next
		Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
		If Err.Number <> 0 Then 'Обработка ошибки, прерываем выполнение'
			vuvodError = "Доступ отклонён!"
			PreBottomLogs.innerHTML = PreBottomLogs.innerHTML & "ERROR: " & vuvodError
			
			On Error Goto 0
		Else
			On Error Goto 0
		PreBottomLogs.innerHTML = ""

3

Re: HTA: Обработка ошибки

спасибо!)