#include #include // 需要包含此头文件来使用 IsUserAnAdmin() #include int main() { SetConsoleOutputCP(65001); // 1. 检查当前是否拥有管理员权限 if (!IsUserAnAdmin()) { char szPath[MAX_PATH]; // 获取当前程序自身的绝对路径 GetModuleFileNameA(NULL, szPath, MAX_PATH); // 使用 "runas" 参数重新启动自身,这会强制 Windows 弹出 UAC 提权提示 HINSTANCE hInst = ShellExecuteA(NULL, "runas", szPath, NULL, NULL, SW_SHOW); // 如果返回值大于 32,说明用户在弹窗中点击了“是”,新进程已成功以管理员身份拉起 if ((INT_PTR)hInst > 32) { return 0; // 关闭当前这个没有权限的旧进程 } else { // 用户点击了“否”或者关闭了弹窗 printf("[-] 错误:此程序必须以管理员身份运行才能修改系统服务!\n"); system("pause"); return 1; } } // 💡 在这个数组里填入你想批量关闭的服务名称 (必须是 Service Name,非 Display Name) const char* servicesToClose[] = { "DiagTrack", // 微软后台遥测/用户体验收集 "DPS", // 诊断策略服务 "WSearch", // Windows 本地搜索索引 (不用本地搜索可关) "TabletInputService", // 触摸键盘和手写面板服务 "Spooler", // 打印机后台处理 (家里/公司没打印机可关) "MapsBroker", // 下载地图管理器 (不下载离线地图可关) "XblAuthManager", // Xbox Live 认证管理器 (不玩 Xbox 游戏可关) "XblGameSave", // Xbox Live 游戏保存 (不玩 Xbox 游戏可关) "dmwappushservice", // 路由设备管理中的 WAP 推送消息,本质上属于辅助遥测(隐私数据收集)的一部分 "WHESVC", // 这是 Windows 11 较新版本中加入的后台服务,用于监控 CPU 负载、温度、电源策略等,并在变卡时记录本地跟踪数据 "RemoteRegistry", // 允许远程用户修改本地电脑的注册表 "RemoteAccess", // 在局域网和广域网环境中提供路由、远程连接服务 "Fax", // 管理电脑收发传真 "EntAppMgmtSvc", // 企业级应用合规性管理 "WpcMonService", // 家长控制服务,用于限制儿童账户的使用时间和浏览内容 "WerSvc", // 微软错误报告生成 (卡顿元凶之一) "WpnService", // 微软推送通知、小组件实时刷新 "Browser", // 局域网计算机浏览器列表 "lmhosts", // NetBIOS 局域网历史遗留解析 "Dosvc", // 传递优化 (后台偷偷 P2P 上传补丁吃带宽) "WbioSrvc", // 生物识别 (无指纹/面部解锁的台式机可关) "RetailDemo", // 线下实体店样机演示模式 // === 小众硬件与上古僵尸服务(无设备直接关) === "WalletService", // 微软钱包服务 "SCardSvr", // 智能卡读卡器服务 "ScDeviceEnum", // 智能卡设备枚举 //"StiSvc", // 扫描仪与照相机图像输入 "ALG", // 历史遗留的应用层网关 "AxInstSV", // 已经淘汰的 ActiveX 插件安装服务 }; // 计算数组中服务的总数量 int totalServices = sizeof(servicesToClose) / sizeof(servicesToClose[0]); printf("==================================================\n"); printf(" Windows 11 服务批量优化脚本 (C语言版) \n"); printf("==================================================\n\n"); // 循环遍历数组,依次关闭服务 for (int i = 0; i < totalServices; i++) { DisableAndStopService(servicesToClose[i]); } printf("\n所有指定服务处理完毕。\n"); system("pause"); return 0; }