各位虎年好,请教一个问题,DOS命令行程序如何修改编码使得支持中文
最近写的一款程序,需要调用dos命令行EXE,但是这个DOS控制台程序有个大毛病,就是命令行字符串只支持英文和数字,不支持中文,我尝试安装虚拟机winxp、win2000、win7 x64,结果发现,输入中文字符串参数,显示出来的都是乱码。我尝试过写API HOOK,因为发现这个命令大概是调用了RegQueryValueExW这个API,HOOK后程序出错,不管是黑月或者静态编译后的DLL,都是无法在HOOK后正确显示中文的,会出错,提示:Error converting policy: 0x5。
这里,真的没有办法了,这款小程序可以说是绝版了,但是有这点瑕疵很是郁闷,所以请教论坛的大哥们帮帮忙,给魔改下,谢谢大家!
软件地址:
https://lyrong5000.lanzouv.com/i2nBB010wfuj
{:301_993:} 麻烦大家了! 批处理脚本改成ANSI编码就OK了。,
那里面是UTF8编码 注册表目录:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\
找到ipsecPolicy开头的项,ipsecName这个名称对应的就是中文名
完全可以另外写个程序,或者挂载一个dll都行,把里面的名称改成你想要的
做apihook的话 大概率要hookpolstore.dll中的RegSetValueExW和RegCreateKeyExW 不是很推荐这么玩 不如重新写一个?
小弟在此先谢过大家。 【恒】 发表于 2022-3-5 16:13
chcp 936
谢谢恒哥,我在启动cmd后先输入chcp 936然后输入
ipseccmd -w REG -p "我" -r "Block TCP/80" -f */*=*/*:80:TCP -n BLOCK -x
不知道您这边测试通过了吗 zyg1000 发表于 2022-3-5 17:11
批处理脚本改成ANSI编码就OK了。,
那里面是UTF8编码
哥,我尝试在notepad中转换为ansi格式,然后保存为.cmd文件
但是再次查看这个文件内容
发现又变成了utf8格式(win10 x64 1909 )
而且还是显示乱码
你能分析下原因吗
win10不支持保存为ansi文本吗 lyrong 发表于 2022-3-5 19:45
哥,我尝试在notepad中转换为ansi格式,然后保存为.cmd文件
但是再次查看这个文件内容
发现又变成了u ...
用UE试试,后准改成bat。。。我这边也是win10,没有问题的。 bester 发表于 2022-3-5 17:40
注册表目录:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\
找到ipsecPol ...
谢谢哥
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\ipsecPolicy{72385230-70fa-11d1-864c-14a300000000}
这个{72385230-70fa-11d1-864c-14a300000000}不是固定的
怎么编程实现将最近新创建的ipsecPolicy的ipsecname从乱码更改为中文呢?
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\ipsecPolicy{d35dcbb5-9dbb-43be-b93e-4b370bc822b9}
这个是另外一个
我目前所想到的是
ipseccmd -w REG -p "我" -r "Block TCP/80" -f */*=*/*:80:TCP -n BLOCK -x
执行后会创建一个乱码的规则
然后怎么在注册表中定位到这个乱码注册表项呢?
表达的词不达意,希望大哥帮忙解答下! zxbadboy 发表于 2022-3-5 19:50
用UE试试,后准改成bat。。。我这边也是win10,没有问题的。
好奇怪 我这个是win10 1909 x64 企业版
用UE保存为“cmd控制台.bat”后缀的
然后执行命令行 策略名还是乱码
页:
[1]
2