window11系统使用hta文件自动创建系统还原点

148 阅读2分钟

先简单介绍一下使用背景,之所以想要写这个自动创建还原点的小功能,是因为之前我的电脑出现问题需要重置系统,但是由于我之前没有设置过系统还原点,导致重置程序后需要重新配置各种环境,手动去设置系统还原点虽然也不难,但对于我这种能点两下鼠标搞定的事绝对不点三下的人来说,这个小功能帮了我不少,现在我想什么时候创建就什么时候创建。

PS.目前我只在window11系统有效 废话不多说,直接上代码

<html>
<head>
<meta charset="UTF-8 ">
<title>创建系统还原点</title>
<hta:application
    applicationname="创建系统还原点"
    border="thin"
    borderstyle="normal"
    caption="yes"
    contextmenu="yes"
    icon=""
    maximizebutton="yes"
    minimizebutton="yes"
    showintaskbar="yes"
    singleinstance="yes"
    sysmenu="yes"
    version="1.0"
    windowstate="normal">
<style>
    body {
        font-family: "Microsoft YaHei", sans-serif;
        margin: 20px;
        background-color: #f0f0f0;
    }
    .container {
        background-color: white;
        padding: 20px;
        border-radius: 8px;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }
    .status {
        margin: 10px 0;
        padding: 10px;
        border-radius: 4px;
    }
    .success {
        background-color: #e8f5e9;
        color: #2e7d32;
    }
    .error {
        background-color: #ffebee;
        color: #c62828;
    }
    .progress {
        display: none;
        margin: 10px 0;
    }
</style>
</head>
<script language="JavaScript">
function checkAdmin() {
    try {
        var shell = new ActiveXObject("Shell.Application");
        var WScript = new ActiveXObject("WScript.Shell");
        
        // 尝试写入一个系统受保护的位置
        var testCmd = 'cmd /c echo %TEMP% > "%SystemRoot%\\temp.txt" 2>&1';
        var result = WScript.Run(testCmd, 0, true);
        
        // 清理测试文件
        WScript.Run('cmd /c del "%SystemRoot%\\temp.txt" 2>nul', 0, true);
        
        return true;
    } catch (e) {
        return false;
    }
}

// 添加一个补零的辅助函数
function padZero(num) {
    return num < 10 ? '0' + num : num;
}

function createRestorePoint() {
    try {
        document.getElementById('progress').style.display = 'block';
        document.getElementById('status').innerHTML = "正在创建系统还原点...";
        document.getElementById('status').className = "status";

        // 创建 WScript.Shell 对象
        var shell = new ActiveXObject("WScript.Shell");
        
        // 获取当前日期并格式化为 YYYY-MM-DD 格式
        var today = new Date();
        var date = today.getFullYear() + '-' + 
                   padZero(today.getMonth() + 1) + '-' + 
                   padZero(today.getDate());
        
        // 创建还原点描述
        var description = date + " 创建系统还原点";
        
        // 直接尝试创建还原点
        var cmd = 'wmic.exe /Namespace:\\\\root\\default Path SystemRestore Call CreateRestorePoint "' + 
                  description + '", 100, 7';
        
        var result = shell.Run(cmd, 0, true);
        
        // 显示成功消息
        document.getElementById('status').innerHTML = "系统还原点创建成功!<br>描述:" + description;
        document.getElementById('status').className = "status success";
        
        // 3秒后关闭窗口
        setTimeout(function() {
            window.close();
        }, 3000);
    } catch (error) {
        document.getElementById('status').innerHTML = "创建系统还原点失败:" + error.message;
        document.getElementById('status').className = "status error";
    } finally {
        document.getElementById('progress').style.display = 'none';
    }
}
</script>
<body onload="createRestorePoint()">
    <div class="container">
        <h2>系统还原点创建工具</h2>
        <div id="status" class="status">正在初始化...</div>
        <div id="progress" class="progress">
            <img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" alt="Loading..."/>
        </div>
    </div>
</body>
</html>