var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2009年06月02日

    QTP启动应用程序分析

    分类:

    QTP Firefox插件存放于 %programfiles%\HP\QuickTest Professional\bin\Mozilla\

                   

    先设置好断点:

    0:000> bp kernel32!CreateProcessW

    照图1.1运行,第3次命中:

    0:000> ddu esp+8 l1

    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for D:\Program Files\HP\QuickTest Professional\bin\WIPackage.dll -

    0012ee40  12918b58 ""D:\Program Files\Internet Explorer\IEXPLORE.EXE" -nome"

    0:000> du 12918b58

    12918b58  ""D:\Program Files\Internet Explo"

    12918b98  "rer\IEXPLORE.EXE" -nomerge "http"

    12918bd8  "://www.microsoft.com ""

     

    照图1.2运行,第3次命中:

    0:000> ddu esp+8 l1

    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for D:\Program Files\HP\QuickTest Professional\bin\WIPackage.dll -

    0012ee40  06eac368 ""D:\Program Files\Mozilla Firefox\firefox.exe" -nomerge"

    0:000> du 06eac368

    06eac368  ""D:\Program Files\Mozilla Firefo"

    06eac3a8  "x\firefox.exe" -nomerge "http://"

    06eac3e8  "www.microsoft.com

     

    照图1.3运行,第3次命中:

    0:020> ddu esp+8 l1

    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for D:\Windows\system32\SHELL32.dll -

    1309fcd0  07b1c850 ""D:\Windows\System32\notepad.exe" "

    0:020> du 07b1c850

    07b1c850  ""D:\Windows\System32\notepad.exe"

    07b1c890  "" "

    为了确定它是以此方式启动,更改为启动MSIE

    0:020> eu 0799d840 "D:\Program Files\Internet Explorer\iexplore.exe"

    运行后,启动了MSIE

     

    下面研究启动的一些细节。

    如果修改图2.1Mercury.WebBrowserCLSID值,运行图1.1和图1.2会失败,但不影响图1.3的运行。

    2.2MSIECOM接口,这个值在Windows Vista及其以上系统中是无法更改的。

    1.     如果保持图2.1Mercury.WebBrowserCLSID值不变,但改变图2.3IEXPLORE.EXE默认值,运行图1.1会失败。“App Paths”属于系统级别的设置,在开始菜单运行时若没输入完整路径名Windows将会从这里作为Search Paths匹配。为了验证QTP启动MSIE不是通过COM运行的,把"%programfiles%\Internet Explorer"整个目录复制到其他位置,然后更新图2.3IEXPLORE.EXE默认值指向新位置,重新运行图1.1,在任务管理器中查看QTP运行的MSIE进程位置,确定了它来自新位置;但这样仍然不足让人信服,我们需要比较COM启动MSIE在当前修改的IEXPLORE.EXE默认值情况下是否正常,运行我先前写的IEAutoDemo,确定此时MSIE进程位于%programfiles%内。

    2.     如果保持图2.1Mercury.WebBrowserCLSID值不变,但改变图2.4PathToExe的值,运行图1.2会失败。

    以上试验证明了QTP启动应用程序是通过CreateProcess完成的。

     

    3.1为图1.1和图1.2中启动浏览器网址保存在注册表的位置;图3.2为勾选了那个框后保存在注册表的位置。

     

    【资源】

    Firefox Command line arguments

    MSIE7 Command-line ParametersMSIE8:Useful command line arguments

    Memory Dump Analysis Anthology, Volume 1Volume 2

    分享到: