MCPcopy Create free account
hub / github.com/WavesMan/Disable-automatic-Windows-update / OneDriveService

Class OneDriveService

python/core/services.py:142–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

140
141
142class OneDriveService:
143 # NOTE: 统一管理云盘同步开关,减少键值误写的风险
144
145 def __init__(self, registry: RegistryAdapter) -> None:
146 self.registry = registry
147
148 def disable(self) -> Result:
149 start = time.perf_counter()
150 log_event(logging.INFO, "onedrive_disable_started", "开始禁用 OneDrive", action="disable_onedrive", status="started")
151 # NOTE: 采用组策略键的双路径写入提高可靠性,并移除当前用户自启动项,减少自动拉起;
152 # 同时尝试结束相关进程(若不存在则容错忽略)
153 cmds = [
154 'taskkill /F /IM OneDrive.exe',
155 'taskkill /F /IM OneDriveStandaloneUpdater.exe',
156 f'reg add "{ONEDRIVE}" /v "DisableFileSyncNGSC" /t REG_DWORD /d 1 /f',
157 f'reg add "{ONEDRIVE_WIN_POLICY}" /v "DisableFileSync" /t REG_DWORD /d 1 /f',
158 'reg delete "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" /v "OneDrive" /f',
159 ]
160 ok, errors = self.registry.batch(cmds)
161 duration_ms = int((time.perf_counter() - start) * 1000)
162 if ok:
163 log_event(logging.INFO, "onedrive_disable_finished", "禁用 OneDrive 成功", action="disable_onedrive", status="ok", duration_ms=duration_ms)
164 return Result(True, data={"status": "disabled"})
165 log_event(
166 logging.ERROR,
167 "onedrive_disable_finished",
168 "禁用 OneDrive 失败",
169 action="disable_onedrive",
170 status="failed",
171 duration_ms=duration_ms,
172 error_type="REGISTRY_WRITE_FAILED",
173 error_message="; ".join(errors),
174 )
175 return Result(False, error={"code": "REGISTRY_WRITE_FAILED", "message": "部分键写入失败", "details": errors})
176
177 def enable(self) -> Result:
178 start = time.perf_counter()
179 log_event(logging.INFO, "onedrive_enable_started", "开始启用 OneDrive", action="enable_onedrive", status="started")
180 cmds = [
181 f'reg add "{ONEDRIVE}" /v "DisableFileSyncNGSC" /t REG_DWORD /d 0 /f',
182 f'reg add "{ONEDRIVE_WIN_POLICY}" /v "DisableFileSync" /t REG_DWORD /d 0 /f',
183 ]
184 ok, errors = self.registry.batch(cmds)
185 duration_ms = int((time.perf_counter() - start) * 1000)
186 if ok:
187 log_event(logging.INFO, "onedrive_enable_finished", "启用 OneDrive 成功", action="enable_onedrive", status="ok", duration_ms=duration_ms)
188 return Result(True, data={"status": "enabled"})
189 log_event(
190 logging.ERROR,
191 "onedrive_enable_finished",
192 "启用 OneDrive 失败",
193 action="enable_onedrive",
194 status="failed",
195 duration_ms=duration_ms,
196 error_type="REGISTRY_WRITE_FAILED",
197 error_message="; ".join(errors),
198 )
199 return Result(False, error={"code": "REGISTRY_WRITE_FAILED", "message": "部分键写入失败", "details": errors})

Callers 1

make_servicesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected