DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: fhc2004
今日帖子: 16
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/6/6 3:40:54
2楼: 修改一下
var
  Tmp: String;
begin
  SetLength(Tmp, 255);
  SetLength(Tmp, TRegistry.ReadBinaryData('', Tmp[1], Length(Tmp) * 2) div 2);
end;

这样就去掉了后面多余的字符
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
2004/6/6 22:10:04
5楼: 按我的例子代码到底该怎么写,我拐不过弯来,太笨!!!谢谢指教!!!我的大哥,谢谢你!!!!
----------------------------------------------
-
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
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  的结果样式,你的例子也一样。
----------------------------------------------
-
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/6/6 23:08:38
9楼: Length(SS) * 2
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
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  即可

----------------------------------------------
-
作者:
男 qxdnfxy (qxdn) ★☆☆☆☆ -
盒子活跃会员
2004/6/6 23:36:14
11楼: "Parm2enc"=hex:77,d3,02,f5   为密码  'bios'
----------------------------------------------
-
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/6/7 0:31:46
12楼: 你要不信我没办法
自己整吧
我没那么多精力
病还没好
头晕着呢
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS