Vbscript 权限被拒绝错误800A0046';objIE.Document.parentWindow.screen';
几年前,我为我的用户编写了一个脚本,供他们在登录VPN后登录到公司驱动器共享。由于IE版本的升级,该脚本多年来一直运行良好,需要在这里和那里进行一些调整。到今天为止,我无法再让脚本正常运行,错误是:Vbscript 权限被拒绝错误800A0046';objIE.Document.parentWindow.screen';,vbscript,Vbscript,几年前,我为我的用户编写了一个脚本,供他们在登录VPN后登录到公司驱动器共享。由于IE版本的升级,该脚本多年来一直运行良好,需要在这里和那里进行一些调整。到今天为止,我无法再让脚本正常运行,错误是: Line: 93 Char: 5 Error: Permission denied: 'objIE.Document.parentWindow.screen' Code: 800A0046 Source: Microsoft VBScript runtime error 我不
Line: 93
Char: 5
Error: Permission denied: 'objIE.Document.parentWindow.screen'
Code: 800A0046
Source: Microsoft VBScript runtime error
我不确定发生了什么变化,但在对错误代码和其他项目进行多次搜索后,我想我会将其发布在这里,看看你们中是否有人可以帮助我解决这个问题
dim WshNetwork
Dim arrFileLines()
'On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Drive Shares.txt", 1)
If Not err.number = 0 then
WScript.Echo "Drive Shares.txt was not found. Please ensure that it is in the same directory as this script file"
WScript.Quit
End If
NumElements = 0
Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(NumElements)
arrFileLines(NumElements) = objFile.ReadLine
NumElements = NumElements + 1
Loop
objFile.Close
strPw = GetPassword()
If strPw = "" Then
wScript.Quit
End If
SplitPasswd = Split(StrPW,"*",2)
username = "DEFAULT\" & SplitPasswd(0)
password = SplitPasswd(1)
Set WshNetwork = Wscript.CreateObject("WScript.Network")
For Count = 0 to (NumElements - 1)
SplitDriveInfo = Split(arrFileLines(Count)," ",2)
DriveLetter = SplitDriveInfo(0)
Share = SplitDriveInfo(1)
ExitCode = WshNetwork.MapNetworkDrive(DriveLetter, Share, false, username, password)
ErrorHandler(err.number)
Next
Sub ErrorHandler(ErrorNumber)
Select Case ErrorNumber
Case 0
'OK
Exit Sub
Case -2147024811
'Already Mapped Continue
Exit Sub
Case -2147024843
'No Connection
WScript.Echo "No connection found. Confirm you have an internet connection and that you have the VPN connected."
WScript.Quit
Case -2147024829
'Share not available
WScript.Echo "The drive share you are trying to connect to does not exist on this server."
WScript.Quit
Case -2147023570
'Invalid username or password
WScript.Echo "Invalid username or password. Please try again."
WScript.quit
Case Else
WScript.Echo "Unknown error: " & CStr(ErrorNumber)
WScript.Quit
End Select
End Sub
Function GetPassword()
Dim objIE
Set objIE = CreateObject( "InternetExplorer.Application" )
objIE.Navigate "about:blank"
objIE.Document.Title = "Login Credentials"
objIE.ToolBar = False
objIE.Resizable = False
objIE.StatusBar = False
objIE.Width = 320
objIE.Height = 320
With objIE.document.parentWindow.screen
objIE.Left = (.availwidth - objIE.Width ) \ 2
objIE.Top = (.availheight - objIE.Height) \ 2
End With
objIE.Document.Body.InnerHTML = "<DIV align=""center""><P>Please enter your credentials</P>" & vbCrLf _
& "<DIV align=""center""><P>Username</P>" & vbCrLf _
& "<P><INPUT TYPE=""Username"" SIZE=""20"" " _
& "ID=""UserName""></P>" & vbCrLf _
& "<DIV align=""center""><P>Password</P>" & vbCrLf _
& "<P><INPUT TYPE=""password"" SIZE=""20"" " _
& "ID=""Password""></P>" & vbCrLf _
& "<P><INPUT TYPE=""hidden"" ID=""OK"" " _
& "NAME=""OK"" VALUE=""0"">" _
& "<INPUT TYPE=""submit"" VALUE="" OK "" " _
& "OnClick=""VBScript:OK.Value=1""></P></DIV>"
objIE.Visible = True
Do While objIE.Document.All.OK.Value = 0
WScript.Sleep 200
Loop
GetPassword = objIE.Document.All.UserName.Value & "*" & objIE.Document.All.Password.Value
objIE.Quit
Set objIE = Nothing
End Function
dim WshNetwork
Dim arrFileLines()
'出现错误时,请继续下一步
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objFile=objFSO.OpenTextFile(“Drive Shares.txt”,1)
如果不是err.number=0,则
WScript.Echo“未找到驱动器共享.txt。请确保它与此脚本文件位于同一目录中”
WScript.Quit
如果结束
数值=0
直到objFile.AtEndOfStream
Redim文件行(NumElements)
arrFileLines(NumElements)=objFile.ReadLine
数值=数值+1
环
objFile.Close
strPw=GetPassword()
如果strPw=“”,则
wScript.Quit
如果结束
SplitPasswd=Split(StrPW,“*”,2)
username=“DEFAULT\”和SplitPasswd(0)
密码=SplitPasswd(1)
设置WshNetwork=Wscript.CreateObject(“Wscript.Network”)
对于计数=0到(数值-1)
SplitDriveInfo=Split(arrFileLines(Count),“”,2)
DriveLetter=SplitDriveInfo(0)
共享=拆分驱动器信息(1)
ExitCode=WshNetwork.MapNetworkDrive(驱动器号、共享、false、用户名、密码)
ErrorHandler(错误编号)
下一个
子ErrorHandler(ErrorNumber)
选择案例错误编号
案例0
”“好的
出口接头
案例-2147024811
'已映射,请继续
出口接头
案例-2147024843
“没有联系
WScript.Echo“未找到连接。请确认您已连接internet,并且已连接VPN。”
WScript.Quit
案例-2147024829
'共享不可用
WScript.Echo“您试图连接到的驱动器共享在此服务器上不存在。”
WScript.Quit
案例-2147023570
'无效的用户名或密码
WScript.Echo“无效的用户名或密码。请重试。”
WScript.quit
其他情况
Echo“未知错误:&CStr(错误号)
WScript.Quit
结束选择
端接头
函数GetPassword()
昏暗的奥布杰
Set objIE=CreateObject(“InternetExplorer.Application”)
objIE.导航“关于:空白”
objIE.Document.Title=“登录凭据”
objIE.ToolBar=False
objIE.resizeable=False
objIE.StatusBar=False
对象宽度=320
物体高度=320
使用objIE.document.parentWindow.screen
objIE.Left=(.availwidth-objIE.Width)\2
objIE.Top=(.availheight-objIE.Height)\2
以
objIE.Document.Body.InnerHTML=“请输入您的凭据”
”&vbCrLf_
&“用户名”
“&vbCrLf”
&“”&vbCrLf_
&“密码”
”&vbCrLf_
&“”&vbCrLf_
&“”_
&“
”
objIE.Visible=True
当objIE.Document.All.OK.Value=0时执行
WScript.Sleep 200
环
GetPassword=objIE.Document.All.UserName.Value&“*”&objIE.Document.All.Password.Value
objIE,退出
设置对象=无
端函数
在此方面的任何帮助都将不胜感激 微软发布的修补程序:[KB3025390]
我可以确认,如果此更新在2014年12月17日之前运行,卸载此更新将解决问题。我在使用IE 11和with objIE.Document.ParentWindow.Screen命令的HTA程序中遇到类似问题 我发现添加objIE.left=910和objIE.top并删除了With objIE.Document.ParentWindow.Screen部分,现在IE窗口可以正常打开
Sub AdditionalComputerInfo
'v3.00 - Changed to HTML Output
strComputer = trim(txtComputerName.Value)
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.ToolBar = 0
objIE.StatusBar = 0
objIE.addressbar = 0
objIE.Width = 650
objIE.Height = 900
'added v3.02
objIE.Left = 910
objIE.Top = 20
objIE.Document.Title = " " & uCase(strComputer) & " Information"
'With objIE.Document.ParentWindow.Screen removed in version 3.02
' objIE.Left = 910
' objIE.Top = 20
'End With
Set objDoc = objIE.Document.Body
这确实解决了问题。是否有一个修复程序不需要卸载修补程序来纠正它?我们要求Microsoft重新考虑他们是如何实现此修补程序的。此处跟踪状态: