MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / ProtectedModeSettingsAreValid

Method ProtectedModeSettingsAreValid

cpp/iedriver/BrowserFactory.cpp:1390–1464  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1388}
1389
1390bool BrowserFactory::ProtectedModeSettingsAreValid() {
1391 LOG(TRACE) << "Entering BrowserFactory::ProtectedModeSettingsAreValid";
1392
1393 bool settings_are_valid = true;
1394 LOG(DEBUG) << "Detected IE version: " << this->ie_major_version_
1395 << ", Windows version supports Protected Mode: "
1396 << IsWindowsVistaOrGreater() ? "true" : "false";
1397 // Only need to check Protected Mode settings on IE 7 or higher
1398 // and on Windows Vista or higher. Otherwise, Protected Mode
1399 // doesn't come into play, and are valid.
1400 // Documentation of registry settings can be found at the following
1401 // Microsoft KnowledgeBase article:
1402 // http://support.microsoft.com/kb/182569
1403 if (this->ie_major_version_ >= 7 && IsWindowsVistaOrGreater()) {
1404 HKEY key_handle;
1405 if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER,
1406 IE_SECURITY_ZONES_REGISTRY_KEY,
1407 0,
1408 KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
1409 &key_handle)) {
1410 DWORD subkey_count = 0;
1411 DWORD max_subkey_name_length = 0;
1412 if (ERROR_SUCCESS == ::RegQueryInfoKey(key_handle,
1413 NULL,
1414 NULL,
1415 NULL,
1416 &subkey_count,
1417 &max_subkey_name_length,
1418 NULL,
1419 NULL,
1420 NULL,
1421 NULL,
1422 NULL,
1423 NULL)) {
1424 int protected_mode_value = -1;
1425 std::vector<wchar_t> subkey_name_buffer(max_subkey_name_length + 1);
1426 for (size_t index = 0; index < subkey_count; ++index) {
1427 DWORD number_of_characters_copied = max_subkey_name_length + 1;
1428 ::RegEnumKeyEx(key_handle,
1429 static_cast<DWORD>(index),
1430 &subkey_name_buffer[0],
1431 &number_of_characters_copied,
1432 NULL,
1433 NULL,
1434 NULL,
1435 NULL);
1436 std::wstring subkey_name = &subkey_name_buffer[0];
1437 // Ignore the "My Computer" zone, since it's not displayed
1438 // in the UI.
1439 if (subkey_name != ZONE_MY_COMPUTER) {
1440 int value = this->GetZoneProtectedModeSetting(key_handle,
1441 subkey_name);
1442 if (protected_mode_value == -1) {
1443 protected_mode_value = value;
1444 } else {
1445 if (value != protected_mode_value) {
1446 settings_are_valid = false;
1447 break;

Callers 1

LaunchBrowserProcessMethod · 0.95

Calls 2

LOGClass · 0.50

Tested by

no test coverage detected