Lua 中 获取各种系统环境信息用法 for Win32Exts

Lua 中 获取各种系统环境信息用法 for Win32Exts

           Win32Exts 是一个支持多种脚本语言(VBS, JS, Lua, Python, Java)的 Win32 扩展库, 通过它,你能够像C/C++ 一般

调用任意系统或者第三方API,实现强大的功能需求。

           40.2020.2.24 之后版本新增了若干直接方便的获取系统信息的接口,包括枚举 进程、线程、服务、注册表、Dll模块、用户、窗口、工作站、导入表、导出表、目录、内存堆、窗口属性、菜单 等等系统环境信息。

        库地址:  https://github.com/tankaishuai/win32exts_for_Lua

1、枚举目录:

          ret_table = win32exts.list_directory( dir_path, [filter] )

          ret_table = win32exts.list_directory_v2( dir_path, [filter,  is_use_filter_to_dir, max_depth ]  )

2、枚举目录:

          以上是根据传统磁盘文件系统进行查询。也可以使用操作系统Shell的目录树结构进行查询。例如:

          ret_table, owner_pidl = win32exts.list_shell_folder( [dir_path, filter] )

3、枚举进程模块:

     ret_table = win32exts.list_module( [process_id, filter] )

     ret_table = win32exts.list_module_v2( [process_id, filter] )

     ret_table = win32exts.list_module_v3( [process_id, filter] )

4、枚举进程列表:

     ret_table = win32exts.list_process( [filter] )

     ret_table = win32exts.list_process_v2( [filter] )

     ret_table = win32exts.list_process_thread( [process_id, filter, ...] )

5、枚举线程列表:

     ret_table = win32exts.list_thread( [process_id] )

     ret_table = win32exts.list_process_thread( [process_id, filter, ...] )

6、枚举(子)窗口列表:

     ret_table = win32exts.list_window( [parent_hwnd, filter] )

     ret_table = win32exts.list_window_v2( [parent_hwnd, filter, is_filter_used_parent, list_depth, list_visible_only] )

7、枚举线程窗口列表:

     ret_table = win32exts.list_thread_window( [thread_id] )

     ret_table = win32exts.list_thread_window_v2( [thread_id, filter, is_filter_used_parent, list_depth, list_visible_only]  )

8、枚举 窗口站 -> 桌面 -> 窗口列表 3级结构:

     ret_table = win32exts.list_winsta()

9、枚举进程内 模块资源 - 类型 - Id - 语言 3级列表:

     ret_table = win32exts.list_resource( [hModule] )

10、枚举服务列表:

     ret_table = win32exts.list_service( [filter] )

     ret_table = win32exts.list_service_v2( [filter] )

11、枚举窗口属性列表:

     ret_table = win32exts.list_window_prop( hWnd )

12、枚举注册表子键:

     ret_table = win32exts.list_registry_key( "HKEY_***", sub_key_path )

13、枚举注册表子键下数据:

     ret_table = win32exts.list_registry_value( "HKEY_***", sub_key_path )

14、枚举当前系统账户列表:

     ret_table = win32exts.list_user( [filter] )

15、枚举模块导出函数列表:

     ret_table = win32exts.list_export_function( [hModule]  )

16、枚举模块导入函数、依赖模块列表:

     ret_api_table, ret_dll_table = win32exts.list_import_function( filePath )

17、枚举进程堆信息 列表:

     ret_table = win32exts.list_heap()

     ret_table = win32exts.list_heap_v2( [process_id] )

18、枚举菜单信息 列表:

     ret_table = win32exts.list_menu( hPopupMenu )

     ret_table = win32exts.list_menu_v2( hTitleBarMenu )

19、枚举进程已打开的文件列表信息:

      ret_table = win32exts.list_process_filehandle( [filter, max_count, use_multi_thread] )

20、枚举文件被哪些进程占用的进程列表信息:

      ret_table = win32exts.list_filehandle_process( [filter, max_count, use_multi_thread] )

      比如 自己打开一个文件 top.png, 查询该文件被哪些进程占用着:

21、枚举磁盘驱动器列表信息:

       ret_table = win32exts.list_drive()

22、枚举系统卷信息,以及挂载点信息:

       ret_tab = win32exts.list_volume()

       ret_tab = win32exts.list_volume_mount_point(root_dir_path)

23、枚举文件名称链接信息:

      ret_tab = win32exts.list_link_name(file_path)

可见该文件存在一个链接符号。

24、枚举文件交换数据流(ADS)信息:

         ret_tab = win32exts.list_stream(file_path)
         ret_tab = win32exts.list_stream_v2(file_path)

可见该文件存在3个额外的数据流。

25、枚举浏览器缓存信息:

        ret_tab = win32exts.list_cache_entry(mask, [max_count])

26、使用 WMI 接口查询各种系统信息:

      以上提供的接口基本上覆盖了所有常见的查询需求。另外 Win32Exts for Lua v43.2020.3.2 以后版本还支持

      直接查询 WMI。例如以下使用 WMI 查询进程列表信息:

      ret_table = win32exts.exec_wql( sql, [limit_count, is_notify_query] )

    以上是同步方式查询,也可以进行异步方式查询,如下:

    ret_table = win32exts.capture_win_changes( [ wait_event, async_exec_command] )

    第一次传入异步执行 sql 查询语句,因为是异步操作,通常不能返回有用的结果(除非设置了 wait_event 参数)。

    待需要时,第二次查询可以获取到返回结果信息。

原创文章 17 获赞 7 访问量 4657

猜你喜欢

转载自blog.csdn.net/tan_kaishuai/article/details/104507255
今日推荐