• 计算机重启脚本


    方案一:
      Set oShell = WScript.CreateObject ("WSCript.shell")
      oShell.run "shutdown -r -f -t 1", true
    存在的问题:
    ShutDown是XP的命令,因此该脚本在WIN2K下不能运行。
    即使在XP下,仅适用于超级用户,普通用户在DOS下执行后会提示:
    操作成功完成。
    客户端没有所需的特权。
    (如果把ShutDown拷贝到WIN2K下,普通用户也是这个提示)
    因此该脚本无法在普通用户下实现重启,实用度:2。

    严格地说,普通用户想用shutdown,则必须要有两个权限:关闭系统(SeShutdownPrivilege)、从远端系统强制关机(SeRemoteShutdownPrivilege)。可以通过Tokenmon来验证这一点,并且通过对INTERACTIVE组加上远程关机权限来解决问题。2009-05-10的03640号日志中有更详细的说明。另外,我们常用的procexp.exe(Process Explorer)也可以看出某个程序所具有的权限。

    方案二:
    shutdown有问题,则换成其它关机命令试试,如:rundll32 shell32,SHExitWindowsEx 2
    但在,在WIN2K与XP下,得到的结果都是:
    shell32 出错
    丢失条目: SHExitWindowsEx

    另一个用于Win98的命令也搬过来:rundll32 user.exe,RestartWindows
    XP运行的提示为:
    应用程序或 DLL C:\WINDOWS\system32\user.exe 为无效的 Windows 映像。请再检测一遍您的安装盘。
    加载 user.exe 时出错
    %1 不是有效的 Win32 应用程序。
    WIN2K下运行,则没有这些提示,但是也没有任何效果。

    改为user32.exe,则XP与WIN2K都提示:
    加载 user32.exe 时出错
    找不到指定的模块。

    在XP下试成功:rundll32 shell32,#59
    提示:@#$%必须重新启动计算机才能使新的设置生效。
    想现在就重新启动计算机吗?
    但点击“是”,却没重启。并且提示信息我们实际需要更改。

    实用度:0

    方案三:
    显示关机对话框
      set oApplication = CreateObject("Shell.Application.1")
      oApplication.ShutdownWindows()
    虽然它可以在WIN2K与XP运行得很好,但它只是显示关机的对话框,剩下,要关机、重启、或注销,是用户来选择,“确定”也是用户来点击。网络上有使用发送光标上下移动键,以及回车来实现自动重启功能。自己感觉不是个好办法。

    实用度:1

    方案四:
    用批处理实现重启
    @echo off
    setlocal
    cd/d %temp%
    echo [version] > reboot.inf
    set inf=InstallHinfSection DefaultInstall
    echo signature=$chicago$ >> reboot.inf
    echo [defaultinstall] >> reboot.inf
    rundll32 setupapi,%inf% 1 %temp%\reboot.inf
    del reboot.inf
    以上代码学习的地方是很多,包括:setlocal、cd/d、rundll32 setupapi。但在WIN2K与XP下,普通帐号运行的结果都是:安装失败。所以没有重启成功。而超级用户却正常。估计是要对注册表HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce要有完全控制权限。

    实用度:1

    方案五:
    WMI
    代码如下:
    Set oWMI = GetObject("winmgmts:" & _
                         "{impersonationLevel=impersonate,(Shutdown)}!" & _
                         "\\." & _
                         "\root\cimv2")
    Set cOSs = oWMI.ExecQuery("Select * from Win32_OperatingSystem")
    For Each oOS in cOSs
      oOS.Reboot()
    Next

    它对WIN2K与XP都适用。
    最后就用它了。

  • 相关阅读:
    MacOS install Maven
    MacOS install Nginx
    网站速度优化
    MacOS命令行计算文件hash值
    网站接入GoogleAnalytics步骤
    更换GitHub Pages博客主题
    那些让我相见恨晚的东西(持续更新)
    python 中的getattr(),setattr(),hasattr()的方法
    父往子传,子往父传,以及平行传值
    watch和computed
  • 原文地址:https://www.cnblogs.com/yzx99/p/1453652.html
Copyright © 2020-2023  润新知