Что нового

Подключение к IE, запущенному под другой учетной записью

zigzagrus79

Новичок
Сообщения
31
Репутация
0
Приветствую уважаемые. Помогите с таким вопросом- Запускается 3 IE - один из своего текущего профиля, и два из других профилей командами
runas /savecred /user:НИК /password:123 "C:\Program Files\Internet Explorer
runas /savecred /user:НИК2 /password:123 "C:\Program Files\Internet Explorer
Сделано это для того, чтобы у каждого окна IE были свои настройки прокси серверов, ну и куки естественно чтобы были разные,куда без этого :ok:.
Суть проблемы- никак не могу подключиться командой _IEAttach к 2 и 3 окну IE(которые из других профилей)
пробовал для проверки запускать еще пару "своих" окон и выполнять код
Код:
#include <IE.au3>

Local $aIE[1], $i = 1
While 1
    $oIE = _IEAttach('', 'instance', $i)
    If @error = $_IEStatus_NoMatch Then ExitLoop
    ReDim $aIE[$i + 1]
    $aIE[$i] = $oIE
    $aIE[0] = $i
    $i += 1
WEnd

If $aIE[0] Then
    For $i = 1 To $aIE[0]
        ConsoleWrite($i & ' (' & $aIE[0] & ') ' & _IEPropertyGet($aIE[$i], 'locationurl') & @LF)
    Next
Else
    ConsoleWrite('No IE' & @LF)
EndIf
в консоли список "моих" IE, из других профилей окна игнорируются.
Win 7 64
запуск из других профилей командой Run('runas /user:ник /pas:123 "C:\Program Files\Internet Explorer\iexplore.exe"') дает тот же эффект
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
Даже в ручную не получается приатачить. По моему, что-то завязанное на правах пользователей или что-то в этом духе. Открываю руками iexplore.exe от имени другого юзера, вбиваю "www.autoitscript.com" и травлю на него вот такой кусочек кода:
Код:
$oIE = _IEAttach("AutoIt")
MsgBox($MB_SYSTEMMODAL, "The URL", _IEPropertyGet($oIE, "locationurl"))


Результата - зеро. Но, открываю от своего пользователя (под которым залогинен) и все отрабатывает нормально. Пробовал и по дескриптору окна, через

Код:
$iPID1 = RunAs("new", @ComputerName, "123", 1, "C:\Program Files\Internet Explorer\iexplore.exe", "", @SW_SHOWMAXIMIZED)
$hwnd1 = _WinAPI_EnumProcessWindows($iPID1)
$oIE1 = _IEAttach($hwnd1[1][0],"hwnd")


Дескриптор находит, но объект не привязывается и $oIE1 конечно же пустое.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Возможно единственный вариант, это запускать exe со скриптом под нужной учетной записью.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Я пробовал, все отлично. Каждый скрипт работает с разными IE, каждый со своими куками и проксями.
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
Он имеет в виду не от имени другого пользователя, а под ним (когда уже залогинился), так я понял?
 
Автор
Z

zigzagrus79

Новичок
Сообщения
31
Репутация
0
я пробовал запустить скрипт через runas который пытается подключиться к окну IE, запущенному под тем же профилем runas, пока не получилось


Добавлено:
Сообщение автоматически объединено:

Получилось таким образом- вызываю скрипт командой Runas и уже в скрипте создаю окно IE, после чего уже _IEAttach срабатывает
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
zigzagrus79 [?]
Сделано это для того, чтобы у каждого окна IE были свои настройки

Так пробовали?
Код:
#include<WinAPIProc.au3>
#include<Array.au3>
#include<IE.au3>

$iPID1 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID1)
$iPID2 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID2)
$iPID3 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID3)

$hWnd1 = _WinAPI_EnumProcessWindows($iPID1)
$hWnd2 = _WinAPI_EnumProcessWindows($iPID2)
$hWnd3 = _WinAPI_EnumProcessWindows($iPID3)

WinWaitActive($hWnd1[1][0])
$oIE1 = _IEAttach($hWnd1[1][0],"hwnd")
WinWaitActive($hWnd2[1][0])
$oIE2 = _IEAttach($hWnd2[1][0],"hwnd")
WinWaitActive($hWnd3[1][0])
$oIE3 = _IEAttach($hWnd3[1][0],"hwnd")

_IENavigate($oIE1, "ya.ru")
_IENavigate($oIE2, "google.ru")
_IENavigate($oIE3, "dmoz.org")
 

lesandr

Новичок
Сообщения
5
Репутация
0
Garrett сказал(а):
zigzagrus79 [?]
Сделано это для того, чтобы у каждого окна IE были свои настройки

Так пробовали?
Код:
#include<WinAPIProc.au3>
#include<Array.au3>
#include<IE.au3>

$iPID1 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID1)
$iPID2 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID2)
$iPID3 = Run("C:\Program Files\Internet Explorer\iexplore.exe -nomerge") ; IE10/11 -noframemerging -private
ProcessWait($iPID3)

$hWnd1 = _WinAPI_EnumProcessWindows($iPID1)
$hWnd2 = _WinAPI_EnumProcessWindows($iPID2)
$hWnd3 = _WinAPI_EnumProcessWindows($iPID3)

WinWaitActive($hWnd1[1][0])
$oIE1 = _IEAttach($hWnd1[1][0],"hwnd")
WinWaitActive($hWnd2[1][0])
$oIE2 = _IEAttach($hWnd2[1][0],"hwnd")
WinWaitActive($hWnd3[1][0])
$oIE3 = _IEAttach($hWnd3[1][0],"hwnd")

_IENavigate($oIE1, "ya.ru")
_IENavigate($oIE2, "google.ru")
_IENavigate($oIE3, "dmoz.org")

Я так понял, могу ошибаться, при ключе -noframemerging -private все куки и параметры прокси хранятся в памяти. Правкой реестра тут не подойдет. Как включать прокси этим окнам IE? Или только эмуляция ручного включения через свойства обозревателя?

На офф. форуме нашел библиотеку:
www.autoitscript.com/forum/topic/166902-netsession-udf-per-process-embedded-browser-settings-proxyagentetc
Вроде автор заявляет, что можно определенному процессу задать свой прокси.
 
Верх