备份win7系统时 弹出服务无法启动错误0x80070422

今天重做系统 想给系统做备份

控制面板--备份与还原---设置备份 然后就报0x80070422的错了

网上百度出的答案大都是这样的:

1.win+r打开运行 输入services.msc 启动Windows Backup服务

2.win+r打开运行 输入services.msc 启动Volume Shadow Copy服务

然而开启后 重启计算机都不行;

但得出一个结论 很有可能是某个服务没启动导致的

于是尝试查看描述里面有备份与还原的相关服务

很幸运 很快就找到一个叫Block Level Backup Engine Service的服务,服务状态是关闭的

所以开启服务 再次尝试备份,这次成功备份了;

答案可以再加一条

3.win+r打开运行 输入services.msc 启动Block Level Backup Engine Servic服务

有不能备份的小伙伴 可以都打开这三个服务,备份好之后启动方式改被手动即可

下面再说说还原的方法

点击右边的恢复系统设置或计算机---打开还原系统----然后一直下一步就可以了

打开还原系统时候可能会报错:系统保护已关闭

我们只需要右键我的电脑---属性---系统保护---选中C盘---选择配置---选中还原系统配置和以前的版本--点击确定即可




<think>我们正在讨论如何通过注册表创建Windows系统服务。根据引用内容,注册表是Windows系统的核心数据库,存储了系统和应用程序的配置信息。创建系统服务通常涉及修改注册表中的特定键值。 在Windows中,系统服务的信息存储在注册表的以下路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 每个服务都是一个子键,子键的名称就是服务名。在该子键下,我们需要设置一些值来配置服务。 关键值项包括: - DisplayName: 服务的显示名称(字符串) - Description: 服务的描述(字符串,可选) - ImagePath: 可执行文件的路径(字符串) - Start: 服务启动类型(DWORD值) - 0x0: 系统启动由引导加载程序加载(用于设备驱动程序) - 0x1: 系统内核启动加载(用于设备驱动程序) - 0x2: 自动启动(在系统启动服务控制管理器启动) - 0x3: 手动启动(由用户或服务依赖触发) - 0x4: 禁用 - Type: 服务类型(DWORD值) - 0x1: 内核设备驱动程序 - 0x2: 文件系统驱动程序 - 0x10: 运行在独立进程中的Win32服务(默认) - 0x20: 其他服务共享进程的Win32服务 - ErrorControl: 错误控制(DWORD值) - 0x0: 忽略错误 - 0x1: 记录错误并继续启动 - 0x2: 记录错误弹出警告并继续启动 - 0x3: 记录错误,使用系统最后一次正确的配置重启 此外,还可以设置其他值项,如DependOnService(指定依赖的服务)等。 步骤: 1. 打开注册表编辑器(regedit.exe) 2. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 3. 在Services下创建一个新的项(Key),名称就是服务的名称(例如:MyService) 4. 在该项下创建上述的值项(Value Entries)来配置服务。 注意:直接操作注册表有风险,务必谨慎。建议在操作前备份注册表。 但是,我们通常不推荐直接通过注册表编辑器手动创建服务,因为容易出错。更安全的方式是使用sc.exe(服务控制管理器命令行工具)或PowerShell的New-Service命令。不过,如果确实需要直接操作注册表(例如在无法使用命令行工具的场合),则可以按照以下步骤操作。 示例:创建一个名为“MyService”的服务,该服务运行一个可执行文件(C:\MyService\MyService.exe),启动类型为自动。 注册表操作步骤: 1. 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下新建一个项(Key),命名为“MyService”。 2. 在MyService项下,创建以下值项: - 字符串值(REG_SZ): DisplayName: 值为“My Custom Service” ImagePath: 值为“C:\MyService\MyService.exe” - DWORD值(REG_DWORD): Start: 值为2(表示自动启动) Type: 值为16(0x10,表示独立进程的Win32服务) ErrorControl: 值为1(正常错误控制) 注意:如果服务需要依赖其他服务,可以创建多字符串值(REG_MULTI_SZ)项“DependOnService”,并在其中列出依赖的服务名称。 重启计算机后,服务应该会自动启动。 但是,请注意,直接修改注册表创建服务可能不会在服务管理控制台(services.msc)中立即显示,通常需要重启系统或触发服务控制管理器的重新扫描。 更安全的方式是使用sc.exe命令: sc create MyService binPath= "C:\MyService\MyService.exe" start= auto DisplayName= "My Custom Service" 或者使用PowerShell: New-Service -Name "MyService" -BinaryPathName "C:\MyService\MyService.exe" -StartupType Automatic -DisplayName "My Custom Service" 由于直接操作注册表风险较高,建议优先使用系统提供的工具。 引用[1]提到注册表是核心数据库,控制着Windows的启动和应用程序的运行,因此修改注册表需要非常谨慎[^1]。同,引用[2]提到注册表有两种格式,但服务相关的配置通常使用标准格式[^2]。引用[3]则展示了注册表中如何设置启动项(如userinit项)[^3]。 因此,虽然可以通过注册表创建服务,但建议在了解风险并备份注册表的情况下进行。 以下是通过注册表创建服务的详细步骤: 1. 备份注册表:在修改前,选择“文件”->“导出”备份整个注册表或至少备份HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services分支。 2. 打开注册表编辑器:按Win+R,输入regedit,回车。 3. 导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 4. 右键点击Services,选择“新建”->“项”,输入服务名称(例如:MyService)。 5. 在新建的MyService项中,创建以下值项: - 右键新建“字符串值”,命名为“DisplayName”,双击编辑,数值数据填写“My Custom Service”。 - 右键新建“字符串值”,命名为“ImagePath”,双击编辑,数值数据填写可执行文件的完整路径(如:C:\MyService\MyService.exe)。 - 右键新建“DWORD (32位)值”,命名为“Start”,数值数据填写2(表示自动启动)。 - 右键新建“DWORD (32位)值”,命名为“Type”,数值数据填写16(0x10,表示Win32独立进程服务)。 - 右键新建“DWORD (32位)值”,命名为“ErrorControl”,数值数据填写1(表示正常错误处理)。 6. 如果需要设置依赖服务,则创建多字符串值(REG_MULTI_SZ): - 右键新建“多字符串值”,命名为“DependOnService”,双击编辑,在每行输入依赖的服务名称(如:RPCSS)。 7. 关闭注册表编辑器。 重启计算机,服务应该会启动。 注意:如果服务需要桌面交互,则还需要设置“Type”为0x1100x10 | 0x100,允许服务桌面交互)。但出于安全考虑,通常不推荐这样做。 最后,再次强调,直接修改注册表创建服务是高级操作,容易出错,可能导致系统不稳定。建议优先使用系统工具(sc.exe或New-Service)。 相关问题: 1. 如何使用sc.exe命令创建Windows服务? 2. 如何通过PowerShell创建和配置系统服务? 3. 注册表中服务配置的详细参数有哪些? 4. 如何备份和恢复Windows注册表? 5. 服务启动失败如何排查问题?</think>### 如何通过注册表创建Windows系统服务Windows系统中,通过注册表创建系统服务需要修改`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services`下的配置项。以下是详细步骤和原理: #### 核心注册表结构 服务配置存储在以下路径: $$ \text{HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName} $$ 其中`ServiceName`是您自定义的服务名称[^1]。 --- ### 创建步骤 1. **创建服务主键** ```reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService] "DisplayName"="我的自定义服务" "Description"="通过注册表创建的系统服务示例" ``` 2. **设置关键参数** ```reg ; 服务类型 (0x10=独立进程) "Type"=dword:00000010 ; 启动类型 (2=自动, 3=手动) "Start"=dword:00000002 ; 错误处理 (1=记录错误并继续) "ErrorControl"=dword:00000001 ; 可执行文件路径 "ImagePath"="C:\\MyService\\service.exe" ``` 3. **添加依赖项(可选)** ```reg ; 依赖服务列表(多字符串值) "DependOnService"=hex(7):52,00,50,00,43,00,53,00,53,00,00,00,00,00 ; 等效于:RPCSS\0\0 ``` 4. **设置安全描述符(可选)** ```reg ; 访问控制列表(二进制值) "Security"=hex:01,00,14,80,90,00,00,00... ``` --- ### 关键参数说明 | 注册表值 | 数据类型 | 说明 | |------------------|------------|----------------------------------------------------------------------| | `Type` | DWORD | 服务类型:$0x1$=内核驱动, $0x2$=文件系统驱动, $0x10$=Win32独立进程 | | `Start` | DWORD | 启动方式:$0$=引导加载, $2$=自动启动, $3$=手动启动 | | `ErrorControl` | DWORD | 错误处理:$0$=忽略, $1$=记录并继续, $2$=警告并继续 | | `ImagePath` | REG_EXPAND_SZ | 可执行文件路径(支持环境变量如`%SystemRoot%`) | | `DependOnService`| REG_MULTI_SZ | 依赖的服务列表(如`RPCSS`) | --- ### 服务启动Windows服务按注册表定义的启动顺序加载: 1. 内核加载`Session Manager(smss.exe)` 2. 启动`Winlogon(winlogon.exe)`[^3] 3. 加载`Services Controller(services.exe)` 4. 按`Start`值顺序启动服务: $$ \text{Start} = 0 \rightarrow 1 \rightarrow 2 \rightarrow 3 $$ 其中`Start=2`的服务系统启动自动运行[^1] --- ### 验证方法 1. 重启系统后检查服务状态: ```cmd sc query MyService ``` 2. 在事件查看器中检查日志: ```powershell Get-WinEvent -LogName System | Where-Object {$_.Id -eq 7045} ``` --- ### 注意事项 1. **注册表备份**:修改前务必备份注册表(`regedit > 文件 > 导出`)[^1] 2. **权限要求**:需管理员权限操作`HKEY_LOCAL_MACHINE` 3. **格式兼容**:Windows XP+使用新版注册表格式,但服务配置保持标准格式[^2] 4. **替代方案**:推荐优先使用`sc.exe`命令创建服务: ```cmd sc create MyService binPath="C:\MyService\service.exe" start=auto ``` > **风险提示**:直接修改服务注册表可能导致系统不稳定,建议仅在必要操作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值