当前位置:  开发笔记 > 开发工具 > 正文

有没有人写过一些delphi代码来执行REGJUMP的工作?

如何解决《有没有人写过一些delphi代码来执行REGJUMP的工作?》经验,为你挑选了1个好方法。

有没有人写过一些delphi代码来执行REGJUMP的工作?

具体来说,REGJUMP是一个MS应用程序,它允许您打开regedit到指定的值/键路径(准备在regedit中查看或编辑).例如:regjump HKLM\Software\Microsoft\Windows将在路径HKLM\Software\Microsoft\Windows中打开regedit.

我试过了:

ShellExecute(handle,'Open','C:\WINDOWS\regedit.exe', nil, nil, SW_SHOW);

这当然只会打开您所看到的最后一条路径.

我试过了:

ShellExecute(handle,'Open','C:\WINDOWS\regedit.exe', '[HKLM\Software\Microsoft\Windows]', nil, SW_SHOW);

但是试图将价值导入路径 - 由于各种原因而失败 - 并且不是我想要做的事情.



1> MartynA..:

我想你会发现在Regedit中访问的最后一个注册表项保存在注册表中的LastKey值下

HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\RegEdit

至少在Windows10中.

所以,我会尝试在调用ShellExecute之前写入我想要访问的值.

示例代码:

program RegJumpTest;

{$APPTYPE CONSOLE}

uses
  SysUtils, Registry;
var
  Reg : TRegistry;
  LastKey,
  KeyToFind,
  ValueToWrite : String;
begin
  ValueToWrite := ParamStr(1);
  KeyToFind := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit';
  Reg := TRegistry.Create;
  if Reg.KeyExists(KeyToFind) then
    writeln('found ', KeyToFind)
  else
    writeln('not found ', KeyToFind);

  if Reg.OpenKey(KeyToFind, False) then
    writeln(KeyToFind, ' opened ok')
  else begin
    writeln('failed to open key: ', KeyToFind);
    Halt(1);
  end;
  LastKey := Reg.ReadString('LastKey');
  writeln('Last key: >', LastKey, '<');

  Reg.WriteString('LastKey', ValueToWrite);
  readln;
end.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有