无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8129|回复: 32
打印 上一主题 下一主题

[求助] PECMD能解析INF或者INI吗?

[复制链接]
跳转到指定楼层
1#
发表于 2023-1-26 20:27:58 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 求道者 于 2023-1-26 20:33 编辑

不是脚本,是INI格式的配置文件。
把INI的键值读取到变量里用来判断。

2#
 楼主| 发表于 2023-1-27 14:02:21 来自手机 | 显示全部楼层
826773297 发表于 2023-1-27 09:58
ini和inf都能读,不用api,不知道你要读什么

把ini的特定键值读取到变量里。

点评

一行命令就行,直接读 READ C:\123.INI,**,CurLine 显示出来用MESS MESS %CurLine%  详情 回复 发表于 2023-1-27 15:09
回复

使用道具 举报

3#
 楼主| 发表于 2023-1-27 16:44:17 | 显示全部楼层
826773297 发表于 2023-1-27 15:09
一行命令就行,直接读

**是键名吗?

点评

不是  详情 回复 发表于 2023-1-27 17:14
回复

使用道具 举报

4#
 楼主| 发表于 2023-1-27 17:30:09 | 显示全部楼层
826773297 发表于 2023-1-27 17:15
你自己没提供示例,谁知道你要读哪个值
  1. ; last modified 1 April 2001 by John Doe
  2. [owner]
  3. name=John Doe
  4. organization=Acme Products

  5. [database]
  6. server=192.0.2.42 ; use IP address in case network name resolution is not working
  7. port=143
  8. file="acme payroll.dat"
复制代码

标准ini。
只能读取整个文本?
然后自己去搜索,过滤?

点评

CALL $--ret:&&ret --qd Kernel32.dll,GetPrivateProfileIntW,$database,$port,#0xFFFFFFFF,$%&CurDir%\test.ini 这个你提供的API,好像只能整数。  详情 回复 发表于 2023-2-3 21:45
比如获取ip部分直接正则就行 [attachimg]518651[/attachimg] READ %desktop%\11111.txt,**,CurLine SED -ni -ex a=?,server=.*? ,IP,CurLine MESS %IP%  详情 回复 发表于 2023-1-27 18:38
回复

使用道具 举报

5#
 楼主| 发表于 2023-1-27 18:45:38 来自手机 | 显示全部楼层
826773297 发表于 2023-1-27 18:38
比如获取ip部分直接正则就行



手动解析总感觉容易出问题。
算了。
回复

使用道具 举报

6#
 楼主| 发表于 2023-2-1 23:25:13 | 显示全部楼层
红毛樱木 发表于 2023-1-27 23:54
GetPrivateProfileStringW
https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-get ...

PECMD调用的示例有吗?
回复

使用道具 举报

7#
 楼主| 发表于 2023-2-3 22:45:19 | 显示全部楼层
本帖最后由 求道者 于 2023-2-3 23:08 编辑
红毛樱木 发表于 2023-2-3 21:45
CALL $--ret:&&ret --qd Kernel32.dll,GetPrivateProfileIntW,$database,$port,#0xFFFFFFFF,$%&CurDir%\t ...
  1. CALL $--ret:&&ret --qd Kernel32.dll,GetPrivateProfileIntW,程序,外置工具模式,#0xFFFFFFFF,F:\FirPE\FirPE.ini
  2. MESS %&&ret%
复制代码



查询的内容也必须是整数吗?
查询中文返回4294967295

文档里说的Unicode是UTF-8带BOM吧?
FirPE.7z (1.36 KB, 下载次数: 2)

点评

--qd都有前导,#整数,VARIANT。 --------------------------------------- PECMD内部使用的是UNICODE就是你说的UTF-16编码,所以用PECMD写代码时,尽量用这个编码。其它编码格式可能需要自己用CODE之类的转换  详情 回复 发表于 2023-2-4 01:50
0xFFFFFFFF=4294967295 可以自己设置找不到后的返回数据。API说明里有。 UNICODE就是UNICODE,UTF-8就是UTF-8,它俩不同的呀  详情 回复 发表于 2023-2-3 23:37
回复

使用道具 举报

8#
 楼主| 发表于 2023-2-4 01:08:29 | 显示全部楼层
本帖最后由 求道者 于 2023-2-4 01:10 编辑
红毛樱木 发表于 2023-2-3 23:37
0xFFFFFFFF=4294967295
可以自己设置找不到后的返回数据。API说明里有。
UNICODE就是UNICODE,UTF-8就 ...
  1. CALL $--ret:&&ret --qd Kernel32.dll,GetPrivateProfileIntW,程序,外置工具模式,#0xFFFFFFFF,D:\FirPE.ini
  2. MESS %&&ret%
复制代码


https://www.codeproject.com/Arti ... nicode-in-INI-files
In Notepad included with Windows, we can choose 3 encoding formats in Unicode. These are "Unicode" (UTF16-little Endian), "Unicode big Endian" (UTF16-big Endian), and "UTF-8". We can use only UTF16-little endian of these formats as an INI file format. The other encodings do not work correctly (you examine it once). Probably, the reason is that Windows NT, XP or later uses the encoding internally. This is why Windows particularly names UTF16-little Endian "Unicode".


我在Win7下面转码了INI。
获得了所谓UNICODE编码的INI。
但还是读不到。

另外:

可能在Win语境下“UNICODE就是UNICODE,UTF-8就是UTF-8,它俩不同的呀 ”
  1. UTF-8、UTF-16、UTF-32 中的 "UTF" 是 "Unicode Transformation Format"  
  2. 的缩写,意思是"Unicode 转换格式",后面的数 字表明至少使用多少个比特位来存储字符, 比如:UTF-8
  3. 最少需要8个比特位也就是一个字节来存储,对应的,  UTF-16 和 UTF-32 分别需要最少 2 个字节 和 4 个字节来存储
复制代码

UTF-8也是UNICODE,是其子集。
即使是在Win平台,Web世界更认可UTF-8,不存在UTF-8不是UNICODE。
况且Linux/Unix/Mac/移动平台,用UTF-8。
只有Windows因为历史原因钦定UTF16-little Endian为唯一指定UNICODE。
倒不如说Windows才是孤例。
所以我“UNICODE编码是什么鬼东西?UTF-8(我的惯性思维,毕竟我是Linux用户)?还是指UTF-16?”
准确来讲这东西是UTF-16LE 带BOM。

扯完了,回归正题。
即使我转换了正确的编码依旧无法读取。
我特意用AHK生成了标准的INI。
但还是无法读取。
附上INI。

顺带一提,Linux下的默认编码是UTF-8不带BOM。


INI.7z (1.36 KB, 下载次数: 8)
回复

使用道具 举报

9#
 楼主| 发表于 2023-2-4 15:23:07 | 显示全部楼层

我看这个函数要操作指针就没搞了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-9-13 14:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表