2013-12-17 4 views
0

Я работаю в книге Excel, которая вызывает Internet Explorer и направляет пользователя книги на страницу входа в систему, чтобы проверить их и затем извлечь данные с нашего сервера. Я обнаружил, что если в IE активированы «Защищенный режим» («Свойства обозревателя -> Безопасность»), они часто будут «застревать» на странице входа в систему после ввода их имени пользователя и пароля. Когда «Защищенный режим» отключен, проблем нет.Получение или настройка параметров обозревателя Internet Explorer с помощью VBA

Я пытаюсь создать макрос, который обнаружит их настройки IE и уведомит пользователя, если включен защищенный режим (и, возможно, измените этот параметр с помощью VBA с помощью метода PutProperty). В настоящее время я работаю с ссылкой на Microsoft Internet Controls. Маршрут, который я попытался, ниже (в рамках подпрограммы, конечно).

Dim objBrowser As InternetExplorer 
Dim vProtected As Variant 

Set objBrowser = New InternetExplorer 

'Opens IE and navigates to log-in page 
'The code here works as expected 

'No idea what to put in for arguments in GetProperty 
vProtected = objBrowser.GetProperty("?") 

Я не уверен, какой тип данных GetProperty фактически возвращает (отсюда вариант), и я не знаю, что передать в нем аргументы. Кроме того, если это не совсем так, я полностью готов к новому курсу действий.

MSDN article в методе GetProperty объекта InternetExplorer был менее полезным.

Стоит отметить, что я совершенно новый для Microsoft Internet Controls и объекта InternetExplorer, это первый раз, когда я работал с ним.

Спасибо за ваше время и внимание!

+0

В качестве обходного пути вы можете добавить сайт в список надежных сайтов в IE. Я думаю, что это отключит защищенный режим для этого веб-сайта. – Sam

+0

Я думаю, что для этого мне придется изменить реестр пользователей, что на самом деле не является жизнеспособным вариантом. Я открыт для представления о том, что это невыполнимая задача (учитывая мои ограничения), просто хотел получить совет эксперта. – Soulfire

ответ

1

Решение оказалось значительно отличающимся от того, что я собирался сделать. Я смирился с тем, что должен играть с реестром, чтобы добиться того, чего я хочу. Хотя это было нежелательно, вот что я сделал в VBA.

Это не мой последний код, так как я все еще работаю над проектом, но этого достаточно.

Dim obj_Shell 
Dim v_Result As Variant 

'Variable to capture user response 
Dim v_Response As Variant 

Set obj_Shell = CreateObject("WScript.Shell") 

'CHECK INTERNET EXPLORER PROTECTED MODE SETTINGS 

'Reads the registry key that determines whether 'Protected Mode' is enabled in internet explorer for the 'Internet' security zone 
'as opposed to 'Local intranet' or 'Trusted Sites', etc. 
'The 3 in the registry key path refers to the zone 'Internet'. 

Debug.Print "Checking user's Internet Explorer protected mode settings..." 

v_Result = obj_Shell.RegRead _ 
("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\2500") 

Select Case v_Result 
    Case 0 'Protected Mode is enabled 
     Debug.Print " Protected mode is enabled!" 
     v_Response = MsgBox("Protected mode is enabled in Internet Explorer. " & _ 
     "This may cause issues with your submission. " & _ 
     "Would you like to disable protected mode?", vbYesNo, "Protected Mode Enabled") 

     If v_Response = vbYes Then 
      obj_Shell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\2500", 3, "REG_DWORD" 
      MsgBox ("Protected mode has been disabled! Submission will not proceed.") 
     End If 

    Case 3 'Protected Mode is disabled 
     Debug.Print " Protected mode is disabled" 
    Case Else 
     Debug.Print "Unable to determine status of protected mode in IE" 
     Debug.Print v_Result 
End Select 
0

Я не думаю, что вы можете использовать GetProperty для считывания настроек безопасности браузеров. Из дока:

  • GetProperty method: Получает значение, связанное с определенного пользователем именем свойства.
  • PutProperty method: Ассоциирует определяемый пользователем имя/значение пары с объектом.

Вы можете исследовать защищенный режим API описан here или URL Зона безопасности API описан here.

Смежные вопросы