有没有人写过一些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.