免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6077 | 回复: 8
打印 上一主题 下一主题

请教python枚举进程所有模块名称,总是出错。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 23:30 |只看该作者 |倒序浏览
先看代码
import win32security,win32api,win32con, win32process
new_privs = (
             (win32security.LookupPrivilegeValue('',win32security.SE_SECURITY_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_TCB_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_SHUTDOWN_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_RESTORE_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_TAKE_OWNERSHIP_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_CREATE_PERMANENT_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_ENABLE_DELEGATION_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_CHANGE_NOTIFY_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_DEBUG_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_PROF_SINGLE_PROCESS_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_SYSTEM_PROFILE_NAME),win32con.SE_PRIVILEGE_ENABLED),
             (win32security.LookupPrivilegeValue('',win32security.SE_LOCK_MEMORY_NAME),win32con.SE_PRIVILEGE_ENABLED)
            
            )

new = ((8,0),(win32security.LookupPrivilegeValue('',win32security.SE_DEBUG_NAME),win32con.SE_PRIVILEGE_ENABLED))
def OpenToken():
    #pid=win32api.GetCurrentProcessId()
    #ph=win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION|win32con.PROCESS_VM_READ,0,pid)
    th = win32security.OpenProcessToken(win32api.GetCurrentProcess(),win32security.TOKEN_ALL_ACCESS|win32con.TOKEN_ADJUST_PRIVILEGES)
    old_privs=win32security.AdjustTokenPrivileges(th,0,new_privs)
    print old_privs
        
if __name__ == '__main__':
    OpenToken()
    plist = win32process.EnumProcesses()
    hd = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS,0,2200)
    hm = win32process.EnumProcessModules(hd)   
    for i in hm:
        print win32process.GetModuleFileNameEx(hd,i)
   

论坛徽章:
0
2 [报告]
发表于 2008-08-19 23:34 |只看该作者
用 GetModuleFileName() 方法提示:
Traceback (most recent call last):
  File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "G:\processtest.py", line 32, in <module>
    print win32process.GetModuleFileName(i)
AttributeError: 'module' object has no attribute 'GetModuleFileName'

用GetModuleFileNameEx 显示不完整。

论坛徽章:
0
3 [报告]
发表于 2008-08-19 23:36 |只看该作者
发个帖子firefox崩溃5次....
我主要想看看Python 的ctypes winapi接口试下效果,没想到,这么多问题。



请帮忙看看什么问题。ActiveState ActivePython 2.5.2

论坛徽章:
0
4 [报告]
发表于 2008-08-19 23:39 |只看该作者
D:\Program Files\EditPlus\editplus.exe
C:\WINDOWS\system32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\WinSxS\X86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\COMCTL32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\SHLWAPI.dll
C:\WINDOWS\system32\VERSION.dll
C:\WINDOWS\system32\comdlg32.dll
C:\WINDOWS\system32\SHELL32.dll
C:\WINDOWS\system32\WINSPOOL.DRV
C:\WINDOWS\system32\oledlg.dll
C:\WINDOWS\system32\ole32.dll
C:\WINDOWS\system32\IMM32.DLL
C:\WINDOWS\system32\LPK.DLL
C:\WINDOWS\system32\USP10.dll
C:\WINDOWS\system32\SETUPAPI.dll
C:\WINDOWS\system32\MSCTF.dll
C:\WINDOWS\system32\msctfime.ime
C:\WINDOWS\system32\UxTheme.dll
C:\WINDOWS\system32\xpsp2res.dll
C:\WINDOWS\system32\USERENV.dll


代码显示的是我机器上EditPlus 的processID,测试请修改下ID,结果看上面,显示不完整,就停住了....不理解。

论坛徽章:
0
5 [报告]
发表于 2008-08-19 23:52 |只看该作者
既然说win32process里没有GetModuleFileName这个函数,试试win32api. GetModuleFileName吧。

论坛徽章:
0
6 [报告]
发表于 2008-08-20 09:00 |只看该作者
我上面贴错了。实际错误提示是。
Traceback (most recent call last):
  File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\Documents and Settings\Administrator\桌面\test.py", line 32, in <module>
    print win32api.GetModuleFileName(i)
error: (0, 'GetModuleFileName', 'No error message is available')

论坛徽章:
0
7 [报告]
发表于 2008-08-20 09:11 |只看该作者
枚举当前 pythonwin 的进程就可以完整的得到模块名

我估计是权限的问题。

论坛徽章:
0
8 [报告]
发表于 2008-08-20 10:36 |只看该作者
原帖由 jasonnbfan 于 2008-8-20 09:00 发表
我上面贴错了。实际错误提示是。
Traceback (most recent call last):
  File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in ...

居然还有这种错误……无语……

论坛徽章:
0
9 [报告]
发表于 2008-08-20 10:59 |只看该作者
搞明白了 用这个print hex(i),win32process.GetModuleFileNameEx(hd,i) 就可以
win32api.GetModuleFileName() 这个方法估计有问题....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP