导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2004/6/5 23:51:55
标题:
如何将字符串'bios'用二进制写入注册表?
浏览:1157
加入我的收藏
楼主:
高手给一例子,万分感谢!
----------------------------------------------
-
作者:
sephil (NAILY Soft)
★☆☆☆☆
-
盒子中级会员
2004/6/6 1:41:56
1楼:
var Tmp: String; begin Tmp := '12345'; TRegistry.WriteBinaryData('', Tmp[1], Length(Tmp) * 2); end; ======================================================== var Tmp: String; begin SetLength(Tmp, 50); // 注意Tmp应该足够的长,否则一旦读出的字符串超过这个长度就会出错 // 比如上面写入的Tmp := '12345'长度是5,这里就要定义为>=5的 TRegistry.ReadBinaryData('', Tmp[1], Length(Tmp) * 2); end; 适当修改一下就可以用了 注意Tmp要是变量 不能是常量
----------------------------------------------
Copyright 2008 ? NAILY Soft
Click here to redirect to my home Click here to redirect to my blog
作者:
2004/6/6 19:51:21
3楼:
感谢!好象上面运行的结果是明码! 如果将该字符串作为盘符共享的密码,又该如何写? 好象98共享密码有加密转换? 2000、XP等没试。 望高手继续指点,可以试一下98的共享C盘,再加密码,看注册表, [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\E] "Flags"=dword:00000103 "Type"=dword:00000000 "Path"="C:\\" "Parm2enc"=hex:77,d3,02,f5 "Parm1enc"=hex:77,d3,02,f5,11,e0,9b,39 "Remark"="" Parm2enc、Parm1enc为WIN98加密转换后的十六进制密码部分。 望高手继续指点,怎么写该程序?
----------------------------------------------
-
作者:
sephil (NAILY Soft)
★☆☆☆☆
-
盒子中级会员
2004/6/6 21:43:28
4楼:
你自己去看看注册表 上面的代码写入注册表后是16进制的,读出来才是原文 要不干吗用WriteBinaryData,直接用WriteString不是更快 下面的就是WriteBinaryData写进去的 [HKEY_LOCAL_MACHINE\SOFTWARE\1] @=hex:45,64,69,74,31,45,64,69,74,31,45,64,69,74,31,45,64,69,74,31,00,00,00,00,\ 26,00,00,00,04,25,95,00,01,00,00,00,e2,0a,10,83 读出来是Edit1Edit1Edit1Edit1
----------------------------------------------
Copyright 2008 ? NAILY Soft
Click here to redirect to my home Click here to redirect to my blog
作者:
2004/6/6 22:10:04
5楼:
按我的例子代码到底该怎么写,我拐不过弯来,太笨!!!谢谢指教!!!我的大哥,谢谢你!!!!
----------------------------------------------
-
作者:
2004/6/6 22:10:59
6楼:
tmp处怎么写???
----------------------------------------------
-
作者:
sephil (NAILY Soft)
★☆☆☆☆
-
盒子中级会员
2004/6/6 22:29:10
7楼:
var Tmp: String; begin Tmp := '12345'; with TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('Software\Microsoft\Windows\CurrentVersion\Network\LanMan\E', True) then begin WriteBinaryData('Parm1enc', Tmp[1], Length(Tmp) * 2); // Write other keys CloseKey; end; finally Free; end; end;
----------------------------------------------
Copyright 2008 ? NAILY Soft
Click here to redirect to my home Click here to redirect to my blog
作者:
2004/6/6 22:45:33
8楼:
大哥,我就是这样写的,但是不是我得到的希望的结果! 原程序这样: var myreg:TRegistry; bl_reg,ss:string; begin myreg:=TRegistry.Create; with myreg do begin rootkey:=HKEY_LOCAL_MACHINE; bl_reg:= 'SOFTWARE\Microsoft\Windows\CurrentVersion\Network\LanMan\C'; if openkey(bl_reg,true) then begin ss:='bios'; WriteString('Path','C:\'); WriteInteger('Flags',00000193); WriteBinaryData('Parm1enc',ss[1],Length(ss)); CloseKey; Destroy; end end; end; 但注册表得不到:"Parm2enc"=hex:77,d3,02,f5 的结果样式,你的例子也一样。
----------------------------------------------
-
作者:
2004/6/6 23:32:40
10楼:
你试一下在C盘设置共享,给个只读密码,然后看注册表,在编程试试看!!! [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C] "Flags"=dword:00000103 "Type"=dword:00000000 "Path"="C:\\" "Parm2enc"=hex:77,d3,02,f5 "Parm1enc"=hex:77,d3,02,f5,11,e0,9b,39 "Remark"="" 或者倒入上述注册表在试 只要写入为"Parm2enc"=hex:77,d3,02,f5 即可
----------------------------------------------
-
作者:
2004/6/6 23:36:14
11楼:
"Parm2enc"=hex:77,d3,02,f5 为密码 'bios'
----------------------------------------------
-