44

如何启动具有特定路径的 Windows 的RegEditHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0 ,例如“ ”,这样我就不必单击?

执行此操作的命令行参数是什么?或者有没有地方可以找到RegEdit的开关的解释?

4

14 回答 14

31

Mark Russinovich有一个名为RegJump的程序,它可以满足您的需求。它将启动 regedit 并将其从命令行移至您想要的键。

RegJump 使用(或至少曾经)在每次调用时使用相同的 regedit 窗口,因此,如果您想要打开多个 regedit 会话,您仍然必须对除 RegJump 采用的一种方法之外的所有方法进行操作。一个小警告,但无论如何都要注意。

于 2008-09-26T01:05:31.737 回答
31

使用以下批处理文件(添加到filename.bat):

REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /t REG_SZ /d Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Veritas\NetBackup\CurrentVersion\Config /f
START regedit

取代:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Veritas\NetBackup\CurrentVersion\Config

与您的注册表路径。

于 2012-09-20T15:33:20.683 回答
5

http://windowsxp.mvps.org/jumpreg.htm(我没有尝试过任何这些):

当您启动 Regedit 时,它会自动打开查看过的最后一个键。(Windows XP 中的注册表编辑器将上次查看的注册表项保存在单独的位置)。如果您希望直接跳转到特定注册表项而不手动导航路径,您可以使用这些方法/工具中的任何一个。

选项 1
使用 VBScript:将这些行复制到记事本文档中,另存为 registry.vbs

'Launches Registry Editor with the chosen branch open automatically
'Author  : Ramesh Srinivasan
'Website: http://windowsxp.mvps.org

Set WshShell = CreateObject("WScript.Shell")
Dim MyKey
MyKey = Inputbox("Type the Registry path")
MyKey = "My Computer\" & MyKey
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey",MyKey,"REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing

双击 Registry.vbs,然后键入要打开的完整注册表路径。

例子:HKEY_CLASSES_ROOT\.MP3

限制:如果 Regedit 已经打开,上述方法将无济于事。

注意:对于 Windows 7,您需要将该行替换为MyKey = "My Computer\" & MyKeyMyKey = "Computer\" & MyKey删除字符串My)。对于德语 Windows XP,字符串"My Computer\"必须替换为"Arbeitsplatz\".

来自 Sysinternals.com 的选项 2
Regjump

这个小命令行小程序采用注册表路径并使 Regedit 向该路径打开。它接受标准(例如HKEY_LOCAL_MACHINE)和缩写形式(例如HKLM)的根密钥。

用法:regjump [路径]

例子:C:\Regjump HKEY_CLASSES_ROOT\.mp3

选项 3
来自 12ghosts.com 的 12Ghosts JumpReg

从托盘图标跳转到注册表项!这是一个非常有用的工具。您可以管理并直接跳转到经常访问的注册表项。无限列表大小,跳转到键和值,一键获取当前键,跳转到剪贴板中的键,在 HKCU 或 HKLM 中跳转到相同的键。在易于使用的托盘图标菜单中管理和排序带有注释的键。为注册表项创建快捷方式。

于 2008-09-26T01:10:28.230 回答
4

我还想指出,您可以在 PowerShell 中查看和编辑注册表。启动它,然后使用 set-location 打开您选择的注册表位置。HKEY 的短名称用作文件系统中的驱动器号(所以要转到 HKEY_LOCAL_MACHINE\Software,您会说:set-location hklm:\Software)。

在 PowerShell 命令提示符下键入 get-help Registry 可以找到有关在 PowerShell 中管理注册表的更多详细信息。

于 2008-09-26T01:15:44.770 回答
4

与此处发布的其他批处理解决方案相比,这里还有一个具有多项增强功能的批处理文件解决方案。

它还设置LastKey由 Regedit 本身在每次退出时更新的字符串值,以在启动与上次退出时相同的键后显示。

@echo off
setlocal EnableDelayedExpansion
set "RootName=Computer"

if not "%~1"=="" (
    set "RegKey=%~1"
    goto PrepareKey
)

echo/
echo Please enter the path of the registry key to open.
echo/
set "RegKey="
set /P "RegKey=Key path: "

rem Exit batch file without starting Regedit if nothing entered by user.
if "!RegKey!"=="" goto ExitBatch

:PrepareKey
rem Remove square brackets and double quotes from entered key path.
set "RegKey=!RegKey:"=!"
if "!RegKey!"=="" goto ExitBatch
set "RegKey=!RegKey:[=!"
if "!RegKey!"=="" goto ExitBatch
set "RegKey=!RegKey:]=!"
if "!RegKey!"=="" goto ExitBatch

rem Replace hive name abbreviation by appropriate long name.
set "Abbreviation=%RegKey:~0,4%"
if /I "%Abbreviation%"=="HKCC" (
    set "RegKey=HKEY_CURRENT_CONFIG%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKCR" (
    set "RegKey=HKEY_CLASSES_ROOT%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKCU" (
    set "RegKey=HKEY_CURRENT_USER%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKLM" (
    set "RegKey=HKEY_LOCAL_MACHINE%RegKey:~4%"
    goto GetRootName
)
if /I "%RegKey:~0,3%"=="HKU" (
    set "RegKey=HKEY_USERS%RegKey:~3%"
)

:GetRootName
rem Try to determine automatically name of registry root.
for /F "tokens=1,2*" %%K in ('%SystemRoot%\System32\reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey"') do (
    if /I "%%K"=="LastKey" (
        for /F "delims=\" %%N in ("%%M") do set "RootName=%%N"
    )
)

rem Is Regedit already running?
%SystemRoot%\System32\tasklist.exe | %SystemRoot%\System32\findstr.exe /B /I /L regedit.exe >nul
if errorlevel 1 goto SetRegPath

echo/
echo Regedit is already running. Path can be set only when Regedit is not running.
echo/
set "Choice=N"
set /P "Choice=Kill Regedit (y/N): "
if /I "!Choice!"=="y" (
    %SystemRoot%\System32\taskkill.exe /IM regedit.exe >nul 2>nul
    goto SetRegPath
)
echo Switch to running instance of Regedit without setting entered path.
goto StartRegedit

:SetRegPath
rem Add this key as last key to registry for Regedit.
%SystemRoot%\System32\reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /d "%RootName%\%RegKey%" /f >nul 2>nul

:StartRegedit
start /B regedit.exe

:ExitBatch
endlocal

增强功能是:

  1. 注册表路径也可以作为命令行参数传递给批处理脚本。

  2. 可以输入或粘贴注册表路径,带或不带双引号。

  3. 注册表路径可以输入或粘贴或作为参数传递,带或不带方括号。

  4. 注册表路径可以输入或粘贴或作为参数传递,也可以使用缩写的配置单元名称(HKCC、HKCU、HKCR、HKLM、HKU)。

  5. 批处理脚本检查是否已运行 Regedit,因为在 Regedit 已运行时启动 Regedit 时未显示注册表项。询问批处理用户是否应该杀死正在运行的实例以重新启动它以显示输入的注册表路径。如果批处理用户选择不杀死 Regedit,则在不设置输入路径的情况下启动 Regedit,导致(通常)只是将 Regedit 窗口置于前台。

  6. 批处理文件尝试自动获取在英语 Windows XP My Computer上、在德语 Windows XP、Arbeitsplatz上和在 Windows 7 上只是Computer上的注册表根名称。LastKey如果注册表中缺少 Regedit的值或为空,这可能会失败。对于这种情况,请在批处理代码的第三行设置正确的根名称。

于 2015-03-14T15:56:18.273 回答
3

复制以下文本并将其保存为批处理文件并运行

@ECHO OFF
SET /P "showkey=Please enter the path of the registry key: "
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /d "%showkey%" /f
start "" regedit

在批处理文件提示时输入要打开的注册表项的路径,然后按Enter。Regedit 打开该值中定义的键。

于 2014-03-27T19:20:58.587 回答
2

我认为这个 C# 解决方案可能会有所帮助:

通过利用较早的建议,我们可以欺骗 RegEdit 打开我们想要的密钥,即使我们不能将密钥作为参数传递。

在此示例中,“注册表设置”的菜单选项将 RegEdit 打开到调用它的程序的节点。

节目形式:

    private void registrySettingsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string path = string.Format(@"Computer\HKEY_CURRENT_USER\Software\{0}\{1}\",
                                    Application.CompanyName, Application.ProductName);

        MyCommonFunctions.Registry.OpenToKey(path);

    }

我的CommonFunctions.Registry

    /// <summary>Opens RegEdit to the provided key
    /// <para><example>@"Computer\HKEY_CURRENT_USER\Software\MyCompanyName\MyProgramName\"</example></para>
    /// </summary>
    /// <param name="FullKeyPath"></param>
    public static void OpenToKey(string FullKeyPath)
    {
        RegistryKey rKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit", true);
        rKey.SetValue("LastKey",FullKeyPath);

        Process.Start("regedit.exe");
    }

当然,您可以将它们全部放在表单的一种方法中,但我喜欢可重用性。

于 2013-01-19T18:47:14.530 回答
2

这是一个基于以上答案的简单 PowerShell 函数https://stackoverflow.com/a/12516008/1179573

function jumpReg ($registryPath)
{
    New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" `
                     -Name "LastKey" `
                     -Value $registryPath `
                     -PropertyType String `
                     -Force

    regedit
}

jumpReg ("Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run") | Out-Null

上面的答案实际上并不能很好地解释它的作用。当您关闭 RegEdit 时,它会将您的最后一个已知位置保存在 中HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit,因此这只是将最后一个已知位置替换为您要跳转的位置,然后将其打开。

于 2017-04-11T17:35:41.893 回答
1

使用 clipboard.exe 和 regjump.exe 创建 BAT 文件以跳转到剪贴板中的键:

clipboard.exe > "%~dp0clipdata.txt"
set /p clipdata=input < "%~dp0clipdata.txt"
regjump.exe %clipdata%

(%~dp0 表示“BAT 文件的路径”)

于 2012-10-03T21:12:19.117 回答
1

基于lionkingrafiki 的回答,这是一个更强大的解决方案,它将接受 reg 密钥路径作为参数,并根据需要自动将 HKLM 转换为 HKEY_LOCAL_MACHINE 或类似的。如果没有参数,则脚本使用JScript 混合嵌合体htmlfile调用的 COM 对象检查剪贴板。复制的数据将被分割和标记化,因此它是否没有被修剪甚至在整个复制的污垢段落中都没有关系。最后,在修改之前验证密钥的存在。包含空格的关键路径必须在双引号内。LastKey

@if (@CodeSection == @Batch) @then
:: regjump.bat
@echo off & setlocal & goto main

:usage
echo Usage:
echo   * %~nx0 regkey
echo   * %~nx0 with no args will search the clipboard for a reg key
goto :EOF

:main
rem // ensure variables are unset
for %%I in (hive query regpath) do set "%%I="

rem // if argument, try navigating to argument.  Else find key in clipboard.
if not "%~1"=="" (set "query=%~1") else (
    for /f "delims=" %%I in ('cscript /nologo /e:JScript "%~f0"') do (
        set "query=%%~I"
    )
)

if not defined query (
    echo No registry key was found in the clipboard.
    goto usage
)

rem // convert HKLM to HKEY_LOCAL_MACHINE, etc. while checking key exists
for /f "delims=\" %%I in ('reg query "%query%" 2^>NUL') do (
    set "hive=%%~I" & goto next
)

:next
if not defined hive (
    echo %query% not found in the registry
    goto usage
)

rem // normalize query, expanding HKLM, HKCU, etc.
for /f "tokens=1* delims=\" %%I in ("%query%") do set "regpath=%hive%\%%~J"
if "%regpath:~-1%"=="\" set "regpath=%regpath:~0,-1%"

rem // https://stackoverflow.com/a/22697203/1683264
>NUL 2>NUL (
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit"^
        /v "LastKey" /d "%regpath%" /f
)

echo %regpath%

start "" regedit
goto :EOF

@end // begin JScript hybrid chimera
// https://stackoverflow.com/a/15747067/1683264
var clip = WSH.CreateObject('htmlfile').parentWindow.clipboardData.getData('text');

clip.replace(/"[^"]+"|\S+/g, function($0) {
    if (/^\"?(HK[CLU]|HKEY_)/i.test($0)) {
        WSH.Echo($0);
        WSH.Quit(0);
    }
});
于 2016-02-16T00:01:49.197 回答
0

这似乎非常过时,但注册信息编辑器(REGEDIT)命令行开关声称它支持这一点。

于 2008-09-26T01:04:30.117 回答
0

您可以通过创建一个批处理文件(根据已经给出的提交)使其看起来像 regedit 执行此行为,但将其命名为 regedit.bat 并将其放在 C:\WINDOWS\system32 文件夹中。(如果没有给出命令行参数,您可能希望它跳过编辑注册表中的最后一个键,因此“regedit”本身就像 regedit 一样工作)然后“regedit HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0”会做什么你要。

这使用了 PATH 中的顺序通常是 C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem; 的事实。ETC

于 2016-03-18T16:48:13.607 回答
0

如果主要目标只是避免“点击”,那么在 Windows 10 中,您只需将目标路径键入或粘贴到 RegEdit 的地址栏中,然后按 Enter。

RegEdit 地址栏

这里的Computer\前缀是自动添加的。如果您只需键入或粘贴以 eg 开头的路径,它也将起作用HKEY_CURRENT_USER\...

于 2020-09-21T13:58:25.953 回答
0

PowerShell代码:

# key you want to open
$regKey = "Computer\HKEY_LOCAL_MACHINE\Software\Microsoft\IntuneManagementExtension\Policies\"
# set starting location for regedit
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" "LastKey" $regKey
# open regedit (-m allows multiple regedit windows)
regedit.exe -m
于 2021-04-08T07:28:46.793 回答