英语法语西班牙语

OnWorks 网站图标

virt-win-reg - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 virt-win-reg

这是 virt-win-reg 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


virt-win-reg - 从 Windows 客户机导出和合并 Windows 注册表项

概要


virt-win-reg 域名 'HKLM\Path\To\Subkey'

virt-win-reg domname 'HKLM\Path\To\Subkey' 名称

virt-win-reg 域名 'HKLM\Path\To\Subkey' @

virt-win-reg --merge 域名 [input.reg ...]

virt-win-reg [--options] disk.img ... # 而不是 domname

警告


你必须 无需 使用“virt-win-reg” - 合并 实时虚拟机上的选项。 如果你
这样做,你 在 VM 中获得不可逆转的磁盘损坏。 “virt-win-reg”试图
阻止您这样做,但不会捕获所有情况。

修改 Windows 注册表是一项固有风险的操作。 格式是
故意模糊和未记录,并且注册表更改可能会离开系统
无法启动。 因此当使用 - 合并 选项,确保您有可靠的备份
第一。

商品描述


该程序可以从 Windows 客户机导出和合并 Windows 注册表项。

第一个参数是 libvirt 来宾名称或 Windows 来宾的原始磁盘映像。

If - 合并 is 无需 指定,然后显示/导出所选的注册表项
(递归)。 例如:

$ virt-win-reg Windows7 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft'

您还可以显示注册表项中的单个值,例如:

$ cvkey='HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$ virt-win-reg Windows7 $cvkey 产品名称
Windows 7企业

- 合并,您可以将文本 regedit 文件合并到 Windows 注册表中:

$ virt-win-reg --merge Windows7 更改.reg

注意
该程序仅用于简单访问注册表。 如果你想做
注册表比较复杂,我们建议您从以下位置下载注册表配置单元文件
客人使用 libguestfs(3)或 客鱼(1) 并在本地访问它们,例如。 使用 蜂巢(3)
蜂巢(1)或 hivex 注册表编辑器(1)。

配置


- 帮帮我
显示简要帮助。

- 版
显示版本号并退出。

-调试
启用调试消息。

-c 的URI
- 连接 的URI
如果使用 libvirt,请连接到给定的 的URI. 如果省略,那么我们连接到
默认的 libvirt 管理程序。

如果直接指定来宾块设备,则根本不使用 libvirt。

- 格式
指定在命令行中给出的磁盘映像格式。 如果省略,则
格式是从磁盘映像的内容中自动检测到的。

如果从 libvirt 请求磁盘映像,则该程序会向 libvirt 请求此
信息。 在这种情况下,格式参数的值将被忽略。

如果使用不受信任的原始格式来宾磁盘映像,您应该确保格式
始终指定。

- 合并
在合并模式下,这会将文本 regedit 文件合并到
虚拟机。 如果这个标志是 无需 给定然后 virt-win-reg 显示或导出
代替注册表项。

需要注意的是 - 合并 is 不安全 在实时虚拟机上使用,并将导致磁盘
腐败。 但是导出(没有这个标志)总是安全的。

-编码 UTF-16LE|ASCII码
合并时(仅),您可能需要指定要使用的字符串的编码
蜂巢文件。 这在“编码字符串”中有详细说明
赢::Hivex::输入regedit(3)。

默认使用 UTF-16LE,它应该适用于最新版本的 Windows。

--不安全的可打印字符串
导出时(仅),假设字符串是 UTF-16LE 并将它们打印为字符串
十六进制序列。 如果存在,从字符串中删除最后的零代码点。

这是不安全的,并且不会保持原始注册表中字符串的保真度
出于各种原因:

· 假设原始编码为UTF-16LE。 ASCII 字符串和其他字符串
这种转换会破坏编码。

· 假设所有类型为 1 或 2 的东西都是字符串,并且
其他一切都不是字符串,但实际注册表中的类型字段不是
可靠。

· 丢失关于零代码点是否跟在字符串后面的信息
注册与否。

这一切的发生是因为注册表本身不包含有关字符串如何
被编码(参见“编码字符串” 赢::Hivex::输入regedit(3))。

你应该只使用这个选项来快速破解和调试注册表
内容,以及 决不要 如果输出将被传递到另一个程序或
存储在另一个注册表中。

支持的 系统


该程序目前支持从 Windows XP 到 Windows NT 派生的客户机
至少到 Windows 8。

支持以下注册表项:

"HKEY_LOCAL_MACHINE\SAM"
"HKEY_LOCAL_MACHINE\SECURITY"
"HKEY_LOCAL_MACHINE\SOFTWARE"
"HKEY_LOCAL_MACHINE\SYSTEM"
"HKEY_USERS\.DEFAULT"
"HKEY_USERS\SID"
哪里 的SID 是 Windows 用户 SID(例如“S-1-5-18”)。

"HKEY_USERS\用户名”
哪里 用户名 是本地用户名(这是一个 libguestfs 扩展)。

您可以使用“HKLM”作为“HKEY_LOCAL_MACHINE”的简写,将“HKU”用作“HKEY_USERS”的简写。

不支持文字键“HKEY_USERS\$SID”和“HKEY_CURRENT_USER”(没有
“当前用户”)。

视窗 8
Windows 8“快速启动”可以阻止 virt-win-reg 编辑注册表。
请参阅“WINDOWS 休眠和 WINDOWS 8 快速启动” 来宾(3)。

编码


"virt-win-reg" 期望 regedit 文件已经在本地重新编码
编码。 通常在 Linux 主机上,这意味着带有 Unix 样式行结尾的 UTF-8。 自从
Windows regedit 文件通常采用 UTF-16LE 格式,带有 Windows 风格的行尾,您可能需要
在处理之前或之后重新编码整个文件。

要将文件从 Windows 格式重新编码为 Linux(在使用 - 合并
选项),你会做这样的事情:

iconv -f utf-16le -t utf-8 < win.reg | dos2unix > linux.reg

在导出之后和将文件发送到 Windows 之前,朝相反的方向前进
用户,请执行以下操作:

unix2dos linux.reg | iconv -f utf-8 -t utf-16le > win.reg

有关编码的更多信息,请参见 赢::Hivex::输入regedit(3)。

如果您不确定当前的编码,请使用 文件(1) 命令。 最近的版本
Windows regedit.exe 生成带有 Windows 样式 (CRLF) 行结尾的 UTF-16LE 文件,例如
这个:

$ 文件软件.reg
software.reg:小端 UTF-16 Unicode 文本,行很长,
带有 CRLF 行终止符

此文件需要先转换 - 合并 它。

CURRENTCONTROLSET 等等


Windows 注册表中实际上并不存在“CurrentControlSet”之类的注册表项
hive 文件的级别,因此您不能修改这些。

“CurrentControlSet”通常是“ControlSet001”的别名。 在某些情况下它
可能是指另一个控制集。 找出答案的方法是查看
“HKLM\SYSTEM\Select”键:

# virt-win-reg WindowsGuest 'HKLM\SYSTEM\Select'
[HKEY_LOCAL_MACHINE\SYSTEM\选择]
“当前”=双字:00000001
“默认”=双字:00000001
“失败”=dword:00000000
"LastKnownGood"=dword:00000002

“当前”是 Windows 启动时将选择的选项。

同样,路径中的其他“当前...”键可能需要替换。

删除 REGISTRY KEYS AND 价值观


要删除整个注册表项,请使用以下语法:

[-HKEY_LOCAL_MACHINE\Foo]

要删除键中的单个值,请使用以下语法:

[HKEY_LOCAL_MACHINE\Foo]
“价值”=-

视窗 TIPS


请注意,其中一些提示会修改来宾磁盘映像。 客人 必须 被关闭,
否则你会得到磁盘损坏。

跑步 A 批量 SCRIPT WHEN A USER 日志 IN
准备 DOS 批处理脚本、VBScript 或可执行文件。 上传这个使用 客鱼(1)。 为了
这个例子脚本被称为“test.bat”,它被上传到“C:\”:

guestfish -i -d WindowsGuest 上传 test.bat /test.bat

准备一个包含注册表更改的 regedit 文件:

猫 > test.reg <<'EOF'
[HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"测试"="c:\\test.bat"
EOF

在本例中,我们使用键“RunOnce”,这意味着脚本将精确运行
第一个用户登录时一次。如果您希望它在每次用户登录时运行,
用“运行”替换“运行一次”。

现在更新注册表:

virt-win-reg --合并 WindowsGuest test.reg

安装 A 服务
本节假设您熟悉 Windows 服务,并且您有一个程序
直接处理 Windows 服务控制协议或者你想运行任何程序
使用服务包装器,如 SrvAny 或免费的 RHSrvAny。

首先上传程序和可选的服务包装器。 在这种情况下测试
程序名为“test.exe”,我们使用的是 RHSrvAny 包装器:

来宾鱼 -i -d WindowsGuest <
上传rhsrvany.exe /rhsrvany.exe
上传 test.exe /test.exe
EOF

准备一个包含注册表更改的 regedit 文件。 在这个例子中,第一个
服务本身或服务包装器(如果使用)需要更改注册表。 这
仅需要第二次注册表更改,因为我使用的是 RHSrvAny 服务包装器。

猫 > service.reg <<'EOF'
[HKLM\SYSTEM\ControlSet001\services\RHSrvAny]
“类型”=双字:00000010
“开始”=双字:00000002
“错误控制”=双字:00000001
"ImagePath"="c:\\rhsrvany.exe"
“显示名称”=“RHSrvAny”
“对象名称”=“网络服务”

[HKLM\SYSTEM\ControlSet001\services\RHSrvAny\Parameters]
"命令行"="c:\\test.exe"
"PWD"="c:\\Temp"
EOF

笔记:

· 有关“ControlSet001”的使用,请参阅本手册页的上述部分。 你可能需要
根据来宾使用的控制集进行调整。

· “ObjectName”控制服务将拥有的权限。 另一种选择是
"ObjectName"="LocalSystem" 这将是最高特权的帐户。

· 有关幻数的含义,请参阅这篇 Microsoft KB 文章:
http://support.microsoft.com/kb/103000.

更新注册表:

virt-win-reg --merge WindowsGuest 服务.reg

SHELL 引用


在 shell 中传递包含“\”(反斜杠)的参数时要小心。 通常你
将不得不使用“单引号”或双反斜杠(但不能同时使用)来保护它们免受
贝壳。

路径和值名称不区分大小写。

使用 onworks.net 服务在线使用 virt-win-reg


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad