MyException - 我的异常网
当前位置:我的异常网» XML/SOAP » win64位下Python2.7安装pyXML有关问题解决方案

win64位下Python2.7安装pyXML有关问题解决方案

www.MyException.Cn  网友分享于:2013-09-07  浏览:20次
win64位下Python2.7安装pyXML问题解决方案

sourceforgepyXML0.84只能支持到python2.4,之后没有更新。搜索网上,这位仁兄提供了适合python2.7pyXML0.84 http://www.somethinkodd.com/oddthinking/2009/10/31/windows-installer-for-pyxml-0-8-4-for-python-2-6-x/

 

下载运行,提示“Pythonversion 2.7required, which was not found in the registry。可是我明明已经安装过Python2.7了(我安装的是Active Python 2.7)。

 

没说的,运行OllyDbg打开PyXML-0.8.4.win32-py2.7.exe调试。打开读取注册表的API分别为RegOpenKeyExRegQueryValueEx。定位相关代码并在004028ED设置断点。

首先读取HKEY_LOCAL_MACHINE下的"Software\Python\PythonCore",获得版本2.7,使用sprintfs合成字符串Software\Python\PythonCore\2.7\InstallPath,并读取,读取失败。我打开注册表观察相应键值存在,我意识到win64位下注册表重定位的可能性。HKEY_LOCAL_MACHINE下的Software重定位到Software\Wow6432NodeSoftware\Python\PythonCore存在2.7项,但是2.7下面没有InstallPath项,于是在2.7下新建InstallPath,并设置默认值为C:\Python27(我电脑上python2.7的安装路径)。重新运行PyXML-0.8.4.win32-py2.7.exe,安装成功!

检验PyXML安装

>>>import xml

>>>xml.__version__

'0.8.4'

 

相应汇编码

.text:004028ED; int __cdecl sub_4028ED(int, HKEY hKey, int)

.text:004028EDsub_4028ED      proc near              ; CODE XREF: .text:00402BDBp

.text:004028ED                                       ;.text:00402BF2p

.text:004028ED

.text:004028EDcbData          = dword ptr -110h

.text:004028EDvar_10C         = dword ptr -10Ch

.text:004028EDvar_108         = dword ptr -108h

.text:004028EDhWnd            = dword ptr -104h

.text:004028EDcchName         = dword ptr -100h

.text:004028EDdwIndex         = dword ptr -0FCh

.text:004028EDphkResult       = dword ptr -0F8h

.text:004028EDSubKey          = byte ptr -0F4h

.text:004028EDlParam          = byte ptr -0A4h

.text:004028EDName            = byte ptr -54h

.text:004028EDvar_4           = dword ptr -4

.text:004028EDarg_0           = dword ptr  8

.text:004028EDhKey            = dword ptr  0Ch

.text:004028EDarg_8           = dword ptr  10h

.text:004028ED

.text:004028ED                push    ebp

.text:004028EE                lea     ebp,[esp-90h]

.text:004028F5                sub     esp,110h

.text:004028FB                mov     eax,dword_42F180

.text:00402900                xor     eax,ebp

.text:00402902                mov    [ebp+90h+var_4], eax

.text:00402908                mov     eax,[ebp+90h+arg_0]

.text:0040290E                push    ebx

.text:0040290F                lea     ecx,[ebp+90h+phkResult]

.text:00402912                push    ecx            ; phkResult

.text:00402913                push   20019h          ; samDesired

.text:00402918                xor     ebx,ebx

.text:0040291A                push    ebx            ; ulOptions

.text:0040291B                mov    [ebp+90h+hWnd], eax

.text:0040291E                mov     eax,[ebp+90h+hKey]

.text:00402924                push   offset aSoftwarePyth_1 ; "Software\\Python\\PythonCore"

.text:00402929                push    eax            ; hKey

.text:0040292A                mov    [ebp+90h+var_10C], eax

.text:0040292D                mov    [ebp+90h+dwIndex], ebx

.text:00402930                call   ds:RegOpenKeyExA

.text:00402936                test    eax,eax

.text:00402938                jz     short loc_402941

.text:0040293A                xor     eax,eax

.text:0040293C                jmp    loc_402A7E

.text:00402941; ---------------------------------------

.text:00402941

.text:00402941loc_402941:                            ; CODE XREF: sub_4028ED+4Bj

.text:00402941                push    ebx            ; lpftLastWriteTime

.text:00402942                push    ebx            ; lpcchClass

.text:00402943                push    ebx            ; lpClass

.text:00402944                push    ebx            ; lpReserved

.text:00402945                lea     eax,[ebp+90h+cchName]

.text:00402948                push    eax            ; lpcchName

.text:00402949                lea     eax,[ebp+90h+Name]

.text:0040294C                push    eax            ; lpName

.text:0040294D                push    ebx            ; dwIndex

.text:0040294E                push   [ebp+90h+phkResult] ; hKey

.text:00402951                mov    [ebp+90h+cchName], 50h

.text:00402958                call   ds:RegEnumKeyExA

.text:0040295E                test    eax,eax

.text:00402960                jnz    loc_402A72

.text:00402966                push    esi

.text:00402967                push    edi

.text:00402968                mov     edi,ds:SendMessageA

.text:0040296E

.text:0040296Eloc_40296E:                            ; CODE XREF: sub_4028ED+17Dj

.text:0040296E                mov     esi,[ebp+90h+arg_8]

.text:00402974                inc    [ebp+90h+dwIndex]

.text:00402977                mov    [ebp+90h+cchName], 50h

.text:0040297E                cmp     esi,ebx

.text:00402980                jz     short loc_4029B4

.text:00402982                cmp    [esi], bl

.text:00402984                jz     short loc_4029B4

.text:00402986                lea     eax,[ebp+90h+Name]

.text:00402989

.text:00402989loc_402989:                            ; CODE XREF: sub_4028ED+B4j

.text:00402989                mov     cl,[esi]

.text:0040298B                cmp     cl,[eax]

.text:0040298D                jnz     shortloc_4029A7

.text:0040298F                cmp     cl,bl

.text:00402991                jz     short loc_4029A3

.text:00402993                mov     cl,[esi+1]

.text:00402996                cmp     cl,[eax+1]

.text:00402999                jnz     shortloc_4029A7

.text:0040299B                inc     esi

.text:0040299C                inc     esi

.text:0040299D                inc     eax

.text:0040299E                inc     eax

.text:0040299F                cmp     cl,bl

.text:004029A1                jnz     shortloc_402989

.text:004029A3

.text:004029A3loc_4029A3:                            ; CODE XREF: sub_4028ED+A4j

.text:004029A3                xor     eax,eax

.text:004029A5                jmp     shortloc_4029AC

.text:004029A7; ---------------------------------------

.text:004029A7

.text:004029A7loc_4029A7:                            ; CODE XREF: sub_4028ED+A0j

.text:004029A7                                       ;sub_4028ED+ACj

.text:004029A7                sbb     eax,eax

.text:004029A9                sbb     eax,0FFFFFFFFh

.text:004029AC

.text:004029ACloc_4029AC:                            ; CODE XREF: sub_4028ED+B8j

.text:004029AC                cmp     eax,ebx

.text:004029AE                jnz    loc_402A50

.text:004029B4

.text:004029B4loc_4029B4:                            ; CODE XREF: sub_4028ED+93j

.text:004029B4                                       ;sub_4028ED+97j

.text:004029B4                mov     esi,ds:wsprintfA

.text:004029BA                lea     eax,[ebp+90h+Name]

.text:004029BD                push    eax

.text:004029BE                lea     eax,[ebp+90h+lParam]

.text:004029C1                push   offset aPythonVersionS ; "Python Version %s (found inregistry)"

.text:004029C6                push    eax            ; LPSTR

.text:004029C7                call    esi ;wsprintfA

.text:004029C9                lea     eax,[ebp+90h+Name]

.text:004029CC                push    eax

.text:004029CD                lea     eax,[ebp+90h+SubKey]

.text:004029D0                push   offset aSoftwarePyth_0 ;"Software\\Python\\PythonCore\\%s\\InstallPa"...

.text:004029D5                push    eax            ; LPSTR

.text:004029D6                call    esi ;wsprintfA

.text:004029D8                add     esp,18h

.text:004029DB                lea     eax,[ebp+90h+var_108]

.text:004029DE                push    eax            ; phkResult

.text:004029DF                push   20019h          ; samDesired

.text:004029E4                push    ebx            ; ulOptions

.text:004029E5                lea     eax,[ebp+90h+SubKey]

.text:004029E8                push    eax            ; lpSubKey

.text:004029E9                push   [ebp+90h+var_10C] ; hKey

.text:004029EC                call   ds:RegOpenKeyExA

.text:004029F2                test    eax,eax

.text:004029F4                jnz     shortloc_402A50

.text:004029F6                push    10Ch           ; size_t

.text:004029FB                call   _malloc

.text:00402A00                mov     esi,eax

.text:00402A02                pop     ecx

.text:00402A03                mov    [ebp+90h+cbData], 105h

.text:00402A0A                cmp     esi,ebx

.text:00402A0C                jz     short loc_402A47

.text:00402A0E                lea     eax,[ebp+90h+cbData]

.text:00402A11                push    eax            ; lpcbData

.text:00402A12                push    esi            ; lpData

.text:00402A13                push    ebx            ; lpType

.text:00402A14                push    ebx            ; lpReserved

.text:00402A15                push    ebx            ; lpValueName

.text:00402A16                push   [ebp+90h+var_108] ; hKey

.text:00402A19                call   ds:RegQueryValueExA

.text:00402A1F                test    eax,eax

.text:00402A21                jnz     shortloc_402A47

.text:00402A23                lea     eax,[ebp+90h+lParam]

.text:00402A26                push    eax            ; lParam

.text:00402A27                push    ebx            ; wParam

.text:00402A28                push    180h           ; Msg

.text:00402A2D                push   [ebp+90h+hWnd]  ; hWnd

.text:00402A30                call    edi ;SendMessageA

.text:00402A32                mov     ecx,[ebp+90h+var_10C]

.text:00402A35                push    esi            ; lParam

.text:00402A36                push    eax            ; wParam

.text:00402A37                push    19Ah           ; Msg

.text:00402A3C                push   [ebp+90h+hWnd]  ; hWnd

.text:00402A3F                mov    [esi+108h], ecx

.text:00402A45                call    edi ;SendMessageA

.text:00402A47

.text:00402A47loc_402A47:                            ; CODE XREF: sub_4028ED+11Fj

.text:00402A47                                       ;sub_4028ED+134j

.text:00402A47                push   [ebp+90h+var_108] ; hKey

.text:00402A4A                call   ds:RegCloseKey

.text:00402A50

.text:00402A50loc_402A50:                            ; CODE XREF: sub_4028ED+C1j

.text:00402A50                                       ;sub_4028ED+107j

.text:00402A50                push    ebx            ; lpftLastWriteTime

.text:00402A51                push    ebx            ; lpcchClass

.text:00402A52                push    ebx            ; lpClass

.text:00402A53                push    ebx            ; lpReserved

.text:00402A54                lea     eax,[ebp+90h+cchName]

.text:00402A57                push    eax            ; lpcchName

.text:00402A58                lea     eax,[ebp+90h+Name]

.text:00402A5B                push    eax            ; lpName

.text:00402A5C                push   [ebp+90h+dwIndex] ; dwIndex

.text:00402A5F                push   [ebp+90h+phkResult] ; hKey

.text:00402A62                call   ds:RegEnumKeyExA

.text:00402A68                test    eax,eax

.text:00402A6A                jz     loc_40296E

.text:00402A70                pop     edi

.text:00402A71                pop     esi

.text:00402A72

.text:00402A72loc_402A72:                            ; CODE XREF: sub_4028ED+73j

.text:00402A72                push   [ebp+90h+phkResult] ; hKey

.text:00402A75                call   ds:RegCloseKey

.text:00402A7B                xor     eax,eax

.text:00402A7D                inc     eax

.text:00402A7E

.text:00402A7Eloc_402A7E:                            ; CODE XREF: sub_4028ED+4Fj

.text:00402A7E                mov     ecx,[ebp+90h+var_4]

.text:00402A84                xor     ecx,ebp

.text:00402A86                pop     ebx

.text:00402A87                call   sub_4077A5

.text:00402A8C                add     ebp,90h

.text:00402A92                leave

.text:00402A93                retn

.text:00402A93sub_4028ED      endp

.text:00402A93

文章评论

60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
漫画:程序员的工作
漫画:程序员的工作
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
我是如何打败拖延症的
我是如何打败拖延症的
旅行,写作,编程
旅行,写作,编程
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员必看的十大电影
程序员必看的十大电影
一个程序员的时间管理
一个程序员的时间管理
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
 程序员的样子
程序员的样子
中美印日四国程序员比较
中美印日四国程序员比较
那些争议最大的编程观点
那些争议最大的编程观点
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
编程语言是女人
编程语言是女人
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
老程序员的下场
老程序员的下场
Java程序员必看电影
Java程序员必看电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
鲜为人知的编程真相
鲜为人知的编程真相
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个调试和排错的小建议
10个调试和排错的小建议
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有