如何自动补字(已解决)
本帖最后由 CCM 于 2011-3-9 23:10 编辑想做一个新账户登入后,设定OLK信箱、OFFICE使用者信息、OFFICE存盘路径的工具。
目前做到OFFICE使用者信息,遇上一个问题,用户信息在注册表编辑器是以binary储存数据,且字符串间要补上00,请教以下程序该怎么修改。
$UI = StringToBinary(@username)
$UN = StringToBinary(@username)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo","UserInitials","REG_BINARY","" & ($UI))
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo","UserName","REG_BINARY","" & ($UN))
比方说目前登入账号是CCM转换出来是43434d如何能改成 430043004d00(需要能补上00区隔,不然开启WORD后,使用者信息处就变成乱码)
或有更好作法,请求指导,谢谢 没明白楼主的意思,只好根据楼主的举例做。
$sText = '43434d'
$sRer = StringRegExpReplace($sText, '(\w{2})', '${0}00')
MsgBox(0, '', $sRer) 感谢水木子版主
再详述我的问题
首先,登入计算机的账号不固定,因此我用@username来撷取登入账号,然后因为使用者信息在注册表编辑器是使用二进制来储存,因此我用StringToBinary(@username)把登入账号转成二进制。
假设目前登入账号是CCM,StringToBinary(@username)转换出来的二进制值是0x43434d,但正确的值必须改成430043004d00,0x要去掉,还要补上00。
水木子版主提供的指令我使用后,字符串会变成0x00430043004d00。想再请问水木子版主有没有办法把0x00这四个字去掉,或者用其它的方法来转换。
谢谢 本帖最后由 骗子 于 2011-3-9 14:41 编辑
$sText = '43434d'
$sRer = StringRegExpReplace($sText, '(\w{2})', '${0}00')
$sRer = StringReplace($sRer, '0x00', '')
MsgBox(0, '', $sRer)
继续用空字符替换0x00 谢谢各位的回答
我后来手动输入430043004d00,发现不行,得再补0变成430043004d0000才可以,所以这步骤反而麻烦。因此我改成删掉这两个机码,重启WORD时,再于提示讯息处送入@username完成使用者信息的设定。
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo","UserInitials")
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo","UserName")
sleep(1000)
ShellExecute(@ProgramFilesDir & "\Microsoft Office\OFFICE11\winword.EXE")
WinWaitActive("蚚誧俷靡")
Send("{LSHIFT}")
send(@username)
send("{TAB}")
send(@username)
sleep(2000)
send("{ENTER}")
ProcessClose("WINWORD.exe")
好好学习....
页:
[1]