IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[求助] 使用StringInStr检查是否包含某汉字字符失败

[复制链接]
billyvh 发表于 2020-9-12 09:14:55 | 显示全部楼层 |阅读模式

想实现一段代码用于查找HKCU64\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace所有子项下的默认值是否含有"百度网盘",如果含有"百度网盘"字眼则删除此子项,在win10 home 2004下使用AccAu3Inst_1.5.11.127版本,运行如下代码能查找到含有"百度网盘"的子项,但是编译后的程序查找失败,请教各位大神如何解决?
  1. $i1 = 1

  2. While RegEnumKey("HKCU64\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace", $i1)

  3.         Local $add = RegEnumKey("HKCU64\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace", $i1)

  4.         Local $str = StringInStr(RegRead("HKCU64\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\" & $add, ""), "百度网盘")

  5.         If $str > 0 Then

  6.                 $c = RegDelete("HKCU64\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\" & $add)

  7.                 ExitLoop

  8.         EndIf

  9.         $i1 = $i1 + 1

  10. WEnd
复制代码




最近访问 头像模式 列表模式
Skyfree 发表于 2020-9-12 10:48:45 | 显示全部楼层

活跃 268362| 技术 1454| 互助 1867| 钻石 31124

编译前正常吗?

点评

谢谢回复! 上述程序段编译前正常,编译前可以检测到含有“百度网盘”字符的注册表子项并删除注册表成功,注册表删除成功后,在我的电脑中“百度网盘”的图标就没了。 但是编译后,StringInStr检测不到“百度网盘  详情 回复 发表于 2020-9-12 15:04
 楼主| billyvh 发表于 2020-9-12 15:04:55 | 显示全部楼层

活跃 335| 技术 0| 互助 0| 钻石 10

Skyfree 发表于 2020-9-12 10:48
编译前正常吗?

谢谢回复!
上述程序段编译前正常,编译前可以检测到含有“百度网盘”字符的注册表子项并删除注册表成功,注册表删除成功后,在我的电脑中“百度网盘”的图标就没了。
但是编译后,StringInStr检测不到“百度网盘”字符,因此注册表子项无法删除,“百度网盘”的图标依然存在。
经过多次测试,好像StringInStr ( "string", "substring" [, casesense = 0 [, occurrence = 1 [, start = 1 [, count]]]] )中 "substring"为英文或数字编译前后的检测结果都正常,如果 "substring"为中文编译前测试成功,编译后测试失败。
在  If $str > 0 Then语句前加msgbox(0,"字符检测结果",$str),可以看到编译前后的结果值是不同的

点评

我觉着你先别找函数的问题,这个函数一般是没有问题的。你用的哪个版本的AU3,编码是ANSI还是UTF8,是否使用了混淆方式编译。有些编译方法会直接让汉字等乱码。  详情 回复 发表于 2020-9-14 11:57
itsky2 发表于 2020-9-13 07:43:47 | 显示全部楼层

活跃 36563| 技术 89| 互助 160| 钻石 560

StringRegExp('百度网盘', '百度') 试试
天空是个不一样的地方,在这里:
有人品、没技术可以更快的学会技术;
有人品、有技术可以更快成为高手;
没人品、有技术等于0;
没人品、没技术尽早回火星吧。
itsky2 发表于 2020-9-13 07:43:56 | 显示全部楼层

活跃 36563| 技术 89| 互助 160| 钻石 560

If StringRegExp('百度网盘', '百度') Then
天空是个不一样的地方,在这里:
有人品、没技术可以更快的学会技术;
有人品、有技术可以更快成为高手;
没人品、有技术等于0;
没人品、没技术尽早回火星吧。
 楼主| billyvh 发表于 2020-9-14 09:23:06 | 显示全部楼层

活跃 335| 技术 0| 互助 0| 钻石 10

MsgBox(0, "字符搜索", StringRegExp("百度网盘", "网盘"))
MsgBox(0, "字符搜索", StringInStr("百度网盘", "网盘"))
Local $reg_add = RegRead("HKCU64\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{679F137C-3162-45da-BE3C-2F9C3D093F64}", "")
MsgBox(0, $reg_add, StringRegExp($reg_add, "网盘"))
MsgBox(0, $reg_add, StringInStr($reg_add, "网盘"))

上面代码编译前,都可以得到正确结果。编译后前两句可以得到正确结果,后两句无法得到正确结果。
即:StringInStr目标字符串、 StringRegExp要检查的主题字符串使用变量时编译后得不到正确结果,好奇怪啊

附:百度网盘图标注册表
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{679F137C-3162-45da-BE3C-2F9C3D093F64}]
@="百度网盘"


Skyfree 发表于 2020-9-14 11:57:04 | 显示全部楼层

活跃 268362| 技术 1454| 互助 1867| 钻石 31124

billyvh 发表于 2020-9-12 15:04
谢谢回复!
上述程序段编译前正常,编译前可以检测到含有“百度网盘”字符的注册表子项并删除注册表成功 ...

我觉着你先别找函数的问题,这个函数一般是没有问题的。你用的哪个版本的AU3,编码是ANSI还是UTF8,是否使用了混淆方式编译。有些编译方法会直接让汉字等乱码。

点评

找到问题点了,我的环境是win10 home 2004+”Autoit v3 中文版 - IT天空” ,AccAu3Inst文件版本1.5.11.127 ,之前写程序一直用程序自动生成的模板 #Region #AccAu3Wrapper_Icon= ;程序图标 #AccAu3Wrap  详情 回复 发表于 2020-9-14 16:00
谢谢指点,我再排查一下  详情 回复 发表于 2020-9-14 14:52
 楼主| billyvh 发表于 2020-9-14 14:52:27 | 显示全部楼层

活跃 335| 技术 0| 互助 0| 钻石 10

Skyfree 发表于 2020-9-14 11:57
我觉着你先别找函数的问题,这个函数一般是没有问题的。你用的哪个版本的AU3,编码是ANSI还是UTF8,是否 ...

谢谢指点,我再排查一下
 楼主| billyvh 发表于 2020-9-14 16:00:58 | 显示全部楼层

活跃 335| 技术 0| 互助 0| 钻石 10

Skyfree 发表于 2020-9-14 11:57
我觉着你先别找函数的问题,这个函数一般是没有问题的。你用的哪个版本的AU3,编码是ANSI还是UTF8,是否 ...

找到问题点了,我的环境是win10 home 2004+”Autoit v3 中文版 - IT天空” ,AccAu3Inst文件版本1.5.11.127 ,之前写程序一直用程序自动生成的模板
#Region
#AccAu3Wrapper_Icon=                                                                                ;程序图标
#AccAu3Wrapper_UseX64=n                                                                                ;是否编译为64位程序(y/n)
#AccAu3Wrapper_OutFile=                                                                                ;输出的Exe名称
#AccAu3Wrapper_OutFile_x64=                                                                        ;64位输出的Exe名称
#AccAu3Wrapper_UseUpx=n                                                                                ;是否使用UPX压缩(y/n) 注:开启压缩极易引起误报问题
#AccAu3Wrapper_Res_Comment=                                                                        ;程序注释
#AccAu3Wrapper_Res_Description=                                                                ;程序描述
#AccAu3Wrapper_Res_Fileversion=1.0.0.1                                                ;文件版本
#AccAu3Wrapper_Res_FileVersion_AutoIncrement=y                                ;自动更新版本 y/n/p=自动/不自动/询问
#AccAu3Wrapper_Res_ProductVersion=1.0                                                ;产品版本
#AccAu3Wrapper_Res_Language=2052                                                        ;资源语言, 英语=2057/中文=2052
#AccAu3Wrapper_Res_LegalCopyright=                                                        ;程序版权
#AccAu3Wrapper_Res_RequestedExecutionLevel=                                        ;请求权限: None/asInvoker/highestAvailable/requireAdministrator
#AccAu3Wrapper_Run_Tidy=y                                                                        ;编译前自动整理脚本(y/n)
#AccAu3Wrapper_Run_Obfuscator=y                                                                ;启用脚本加密(y/n)
#Obfuscator_Parameters=/cs=1 /cn=1 /cf=1 /cv=1 /sf=1 /sv=1        ;脚本加密参数: 0/1不加密/加密, /cs字符串 /cn数字 /cf函数名 /cv变量名 /sf精简函数 /sv精简变量
#AccAu3Wrapper_DBSupport=y                                                                        ;使字符串加密支持双字节字符(y/n) <- 可对中文字符等实现字符串加密
#AccAu3Wrapper_AntiDecompile=y                                                                ;是否启用防反功能(y/n) <- 简单防反, 用于应对傻瓜式反编译工具
#EndRegion

#cs ____________________________________
       
        欢迎使用 AutoIt v3 中文版 !
       
        IT天空:                https://www.itiankong.com/
        Au3专区:        https://www.itiankong.net/forum-au3-1.html
       
        Au3版本:        3.3.14.2
        脚本作者:
        脚本功能:
        更新日志:
        联系方式:
       
#ce _______________脚本开始_________________


直到今天遇到中文字符比较的问题,经您提醒
#AccAu3Wrapper_Run_Obfuscator=y
改为
#AccAu3Wrapper_Run_Obfuscator=n
后解决了此问题,感谢您的热心回复和指点,再次谢谢

点评

遇到这类问题可以先 Msgbox 一段汉字看看实际输出是什么,如果乱码直接找编译的问题。  详情 回复 发表于 2020-9-14 16:14
好的。  详情 回复 发表于 2020-9-14 16:13
Skyfree 发表于 2020-9-14 16:13:47 | 显示全部楼层

活跃 268362| 技术 1454| 互助 1867| 钻石 31124

billyvh 发表于 2020-9-14 16:00
找到问题点了,我的环境是win10 home 2004+”Autoit v3 中文版 - IT天空” ,AccAu3Inst文件版本1.5.11.1 ...

好的。
Skyfree 发表于 2020-9-14 16:14:24 | 显示全部楼层

活跃 268362| 技术 1454| 互助 1867| 钻石 31124

billyvh 发表于 2020-9-14 16:00
找到问题点了,我的环境是win10 home 2004+”Autoit v3 中文版 - IT天空” ,AccAu3Inst文件版本1.5.11.1 ...

遇到这类问题可以先 Msgbox 一段汉字看看实际输出是什么,如果乱码直接找编译的问题。

点评

感谢指点!  详情 回复 发表于 2020-9-15 07:28
 楼主| billyvh 发表于 2020-9-15 07:28:34 来自手机 | 显示全部楼层

活跃 335| 技术 0| 互助 0| 钻石 10

Skyfree 发表于 2020-9-14 16:14
遇到这类问题可以先 Msgbox 一段汉字看看实际输出是什么,如果乱码直接找编译的问题。

感谢指点!

点评

不谢  详情 回复 发表于 2020-9-15 10:42
Skyfree 发表于 2020-9-15 10:42:52 | 显示全部楼层

活跃 268362| 技术 1454| 互助 1867| 钻石 31124


不谢
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

billyvh

335

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • 华为史上最大开箱:赛力斯华为智选SF5亮相
  • 黄仁勋:英伟达不是非收购Arm不可 但我们想
  • 29999元 七彩虹iGame RTX 3090 Kudan九段价
  • Intel 5GHz新U i7-11390H曝光:功耗放开 性
  • 微软在Windows 10预览版本中修复了3月累积
  • 华擎推出H510 Pro BTC+加密货币挖矿专用主
  • 曾爆炒到1.8万的RTX 3080 现在价格大跌还卖
  • 供应链断裂、芯片价格翻倍,印度 Jio 与谷
  • AMD Socket AM5主板将于明年二季度到来 Zen
  • 西数推出坚固易携带的高性能大容量Ultrasta
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 说的太有道理了
  • 为什么?
  • 也不知道写了个啥论文 能让老师露出这般表
  • 本想拍一张美美的照片 没想到拍成王八上天
  • 当监考老师一直盯着我
  • 对你来说,晾衣夹只是晾衣夹,但对有的人来
  • 高考前后
  • 旗开得胜
  • 真正的快乐
  • 竟然是手工制品啊
关注官方微信
快速回复 返回顶部 返回列表