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 | 显示全部楼层

活跃 271123| 技术 1456| 互助 1867| 钻石 31134

编译前正常吗?

点评

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

活跃 333| 技术 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 | 显示全部楼层

活跃 39221| 技术 89| 互助 160| 钻石 580

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

活跃 39221| 技术 89| 互助 160| 钻石 580

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

活跃 333| 技术 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 | 显示全部楼层

活跃 271123| 技术 1456| 互助 1867| 钻石 31134

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 | 显示全部楼层

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

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

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

活跃 333| 技术 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 | 显示全部楼层

活跃 271123| 技术 1456| 互助 1867| 钻石 31134

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

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

活跃 271123| 技术 1456| 互助 1867| 钻石 31134

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 来自手机 | 显示全部楼层

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

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

感谢指点!

点评

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

活跃 271123| 技术 1456| 互助 1867| 钻石 31134


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

本版积分规则

billyvh

333

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • “哈苏绝非贴牌”,一加明天将在 OPPO Colo
  • 中国工程院院士许祖彦:激光显示将成为下一
  • 微信安卓测试版更新:关怀模式上线 字体变
  • 消息称苹果基本批准京东方供应iPhone 13屏
  • MIUI 12.5增强版第二批升级来了:支持机型
  • realme GT Neo2首发全新散热技术 徐起:这
  • Intel 12/13代酷睿LGA1700插座首曝:变大了
  • 三星开始为笔记本制造90Hz OLED显示屏!联
  • iPhone 13标配 苹果A15处理器跑分来了:GPU
  • Intel消灭几十年顽疾!BIOS更新无需重启
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 谐音梗扣钱
  • 小心诸葛军师骂你
  • 突然看懂毕加索的画了
  • 或者是99元
  • 让你瞧瞧佛法的力量!
  • 竟然有点用?
  • 是没品精髓了
  • 构成解析
  • 化妆师自带灯光
  • 设计师狂喜,工程师骂娘
关注官方微信
快速回复 返回顶部 返回列表