这本书貌似有挺多小错误的,而且针对的是Python 2.x版本以及32位操作系统,所以要用Python 3.x 学习起来会略有麻烦(我的开发环境是WinXP+python 3.3)。
因为python 3.x默认是Unicode编码,所以在对Windows API传参时就有可能遇到麻烦。比如,CreateProcessA函数的第一个参数要求的是ascii编码的字符串,如果直接传python字符串那么就会导致那章的第一个程序产生错误代码为“2”的错误。
解决方法有两个(参考自:http://www.programlife.net/python-gray-hat.html):
1):改用CreateProcessW函数
2):把python 3.x字符串的编码方式改为ascii码,具体为 str.encode("ascii")
此外,书中代码关于CreateProcessA函数还存在缺少参数的问题。鉴于书中代码小错误很多,大家可以去那本书的外国出版社网站下载源码。
在补充一下,如果你用python3,那么你要注意程序中的进程号选python.exe对应的那个,而不是py.exe对应的那个;如果是python2就不会遇上这个问题,因为运行python脚本根本没有py.exe。