Vbscript 权限被拒绝错误800A0046';objIE.Document.parentWindow.screen';

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 我不

几年前,我为我的用户编写了一个脚本,供他们在登录VPN后登录到公司驱动器共享。由于IE版本的升级,该脚本多年来一直运行良好,需要在这里和那里进行一些调整。到今天为止,我无法再让脚本正常运行,错误是:

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重新考虑他们是如何实现此修补程序的。此处跟踪状态: