有没有人写过一些REGJUMP做的delphi代码?

具体地说,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);


当然,哪一个只会打开regedit到您正在查看的最后一条路径。

我试过了:

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


但这试图将值导入路径-出于各种原因失败了-但这不是我想要做的。

最佳答案

我想您会发现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.

10-04 18:37