有没有人写过一些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);
但是试图将价值导入路径 - 由于各种原因而失败 - 并且不是我想要做的事情.
我想你会发现在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.