3秒教你Windows自动更新关闭(开源)

视频链接

注册表修改

服务开启

通过修改注册表达到修改暂停更新日期
实现效果

static bool RegSetting() {
	const char* sub_key = "SOFTWARE\\Microsoft\\WindowsUpdate\\UX\\Settings";
	DWORD value = 65536;
	HKEY hKey = NULL;
	DWORD ret = false;
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, sub_key, &hKey);
	if (ret != ERROR_SUCCESS) {
		return false;
	}
	ret = RegSetKeyValueA(hKey, NULL, "FlightSettingsMaxPauseDays", REG_DWORD, &value, REG_DWORD);
	if (ret != ERROR_SUCCESS) {
		return false;
	}
	if (hKey != NULL) CloseHandle(hKey);
	return true;
}

服务关闭

通过修改windows服务状态,达到无法更新
Start状态标识服务启动类型的状态 自动(延迟启动),自动,手动,禁止

static bool ServerClose() {
	HKEY hKey;
	LONG ret;
	DWORD value = 1;
	DWORD data_0 = 0;
	const char str_value[] = "localserver.localdomain.wsus";
	const char* str_value_2 = "wsus.localdomain.localserver";
	const char* debugger_value = "/";

	// DisableWindowsUpdateAccess
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "DisableWindowsUpdateAccess", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// NoAutoUpdate
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "NoAutoUpdate", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// NoWindowsUpdate
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "NoWindowsUpdate", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// DisableOSUpgrade
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "DisableOSUpgrade", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// WindowsStore (assuming REG_DWORD with value 1)
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "WindowsStore", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// OSUpgrade
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		data_0 = 0x0;
		ret = RegSetKeyValueA(hKey, NULL, "OSUpgrade", REG_DWORD, &data_0, sizeof(data_0));
		RegCloseKey(hKey);
	}

	// ReservationsAllowed
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		data_0 = 0x0;
		ret = RegSetKeyValueA(hKey, NULL, "ReservationsAllowed", REG_DWORD, &data_0, sizeof(data_0));
		RegCloseKey(hKey);
	}

	// DoNotConnectToWindowsUpdateInternetLocations
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "DoNotConnectToWindowsUpdateInternetLocations", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// UseWUServer
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "UseWUServer", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// WUServer
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		ret = RegSetValueExA(hKey, "WUServer", 0, REG_SZ, (const BYTE*)str_value, sizeof(str_value));
		RegCloseKey(hKey);
	}

	// WUStatusServer
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		ret = RegSetValueExA(hKey, "WUStatusServer", 0, REG_SZ, (const BYTE*)str_value, sizeof(str_value));
		RegCloseKey(hKey);
	}

	// UpdateServiceUrlAlternate
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", &hKey);
	if (ret == ERROR_SUCCESS) {
		ret = RegSetValueExA(hKey, "UpdateServiceUrlAlternate", 0, REG_SZ, (const BYTE*)str_value_2, strlen(str_value_2) + 1);
		RegCloseKey(hKey);
	}

	// TrayIconVisibility
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\WindowsUpdate\\UX\\Settings", &hKey);
	if (ret == ERROR_SUCCESS) {
		data_0 = 0x0;
		ret = RegSetKeyValueA(hKey, NULL, "TrayIconVisibility", REG_DWORD, &data_0, sizeof(data_0));
		RegCloseKey(hKey);
	}

	// wuauserv Start
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\wuauserv", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x4; // Changed to 4 in the last entry
		ret = RegSetKeyValueA(hKey, NULL, "Start", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// wuauserv ImagePath
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\wuauserv", &hKey);
	if (ret == ERROR_SUCCESS) {
		const char* image_path = "%SystemRoot%\\system32\\svchost.exe -k wusvcs -p";
		ret = RegSetValueExA(hKey, "ImagePath", 0, REG_EXPAND_SZ, (const BYTE*)image_path, strlen(image_path) + 1);
		RegCloseKey(hKey);
	}

	// PushToInstall Start
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\PushToInstall", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x3;
		ret = RegSetKeyValueA(hKey, NULL, "Start", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	// TrustedInstaller Start
	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\TrustedInstaller", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x3;
		RegSetKeyValueA(hKey, NULL, "Start", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}


	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\wuauserv", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x4;
		ret = RegSetKeyValueA(hKey, NULL, "Start", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\wuauserv", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x1;
		ret = RegSetKeyValueA(hKey, NULL, "WubLock", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}

	ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\DoSvc", &hKey);
	if (ret == ERROR_SUCCESS) {
		value = 0x4;
		ret = RegSetKeyValueA(hKey, 0, "Start", REG_DWORD, &value, sizeof(value));
		RegCloseKey(hKey);
	}
	return true;
}

服务开启

通过逆向开启服务,开启自动更新

static bool ServerOpen() {
	// 设置 wuauserv 的 ImagePath
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\wuauserv", "ImagePath", "%SystemRoot%\\system32\\svchost.exe -k netsvcs -p", REG_EXPAND_SZ);

	// 设置 WaaSMedicSvc 的 ImagePath
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\WaaSMedicSvc", "ImagePath", "%SystemRoot%\\system32\\svchost.exe -k wusvcs -p", REG_EXPAND_SZ);

	// 设置 PushToInstall 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\PushToInstall", "Start", "3", REG_DWORD);

	// 设置 TrustedInstaller 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\TrustedInstaller", "Start", "3", REG_DWORD);

	// 设置 wuauserv 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\wuauserv", "Start", "2", REG_DWORD);

	// 设置 DoSvc 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\DoSvc", "Start", "2", REG_DWORD);

	// 覆盖 WaaSMedicSvc 的 Start 为 3
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\WaaSMedicSvc", "Start", "3", REG_DWORD);

	// 设置 UsoSvc 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\UsoSvc", "Start", "2", REG_DWORD);

	// 设置 BITS 的 Start
	setRegistryValue("SYSTEM\\ControlSet001\\Services\\BITS", "Start", "3", REG_DWORD);

	// 删除各个注册表值
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", "DisableWindowsUpdateAccess");
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "NoAutoUpdate");
	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoWindowsUpdate");
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", "DisableOSUpgrade");

	// 注意:这里处理整个键下的所有值,或者如果只想删除特定值,需要指定值名
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft", "WindowsStore"); // 删除整个键(如果需要)
	// 或者如果只想删除某个特定的值(如果有的话),需要知道确切的值名
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\WindowsStore", "SpecificValueName");

	// 由于上述注释中提到没有具体的值名,这里我们暂时跳过或假设删除整个键的操作在别处处理

	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate", "OSUpgrade");
	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate", "ReservationsAllowed");
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "AUOptions"); // 自动更新选项
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "ScheduledInstallDay"); // 计划安装日
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "ScheduledInstallTime"); // 计划安装时间
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "UseWUServer"); // 使用 WUServer
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "DetectUpdateInterval"); // 检测更新间隔
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", "NoAutoRebootWithLoggedOnUsers"); // 登录用户时不自动重启

	deleteRegistryValue("SOFTWARE\\Microsoft\\WindowsUpdate\\UX\\Settings", "SvOfferDeclined"); // 可能会因为“未找到名称”而打印信息
	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update", "AUOptions"); // 另一个可能的自动更新选项位置
	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update", "ElevationType"); // 升级类型

	// 其他可能的设置
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Windows\\System", "EnableLUA"); // 用户帐户控制 (UAC)
	deleteRegistryValue("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows", "DisableCAD"); // 禁用Ctrl+Alt+Delete
	deleteRegistryValue("SOFTWARE\\Policies\\Microsoft\\Internet Explorer\\Main", "DisableFirstRunCustomize"); // IE首次运行自定义

	// BITS 服务相关设置
	deleteRegistryValue("SYSTEM\\ControlSet001\\Services\\BITS", "WubLock"); // 可能会因为“未找到名称”而打印信息
	deleteRegistryValue("SYSTEM\\ControlSet001\\Services\\BITS", "Start"); // BITS服务启动类型
	return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值