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

时间:2014-12-22 17:16:40

标签: vbscript

我有一个脚本,几年前我为我的用户放在一起,让他们在登录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

对此的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

Microsoft发布的修补程序:[KB3025390] http://support.microsoft.com/kb/3025390

我可以确认卸载此更新将在2014年12月17日之前解决问题。

答案 1 :(得分:0)

我在使用IE 11和With objIE.Document.ParentWindow.Screen命令的HTA程序中遇到了类似的问题。

我发现添加了objIE.left = 910和objIE.top并删除了With objIE.Document.ParentWindow.Screen部分,现在IE Windows打开正常。

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