当我登录到 Windows 时自动运行脚本

Hal*_*rim 28 windows script login

如何在登录 Windows 时自动运行脚本?

每当我登录计算机时,我都想运行这样的程序:

echo %USERNAME% logged on at %DATE% %TIME% >> log.txt
Run Code Online (Sandbox Code Playgroud)

每当我解锁屏幕保护程序时,一个奖励就是能够运行相同的脚本。

小智 23

您可以创建一个计划任务,该任务将在您的计算机解锁时运行:

  1. 开始 > 管理工具 > 任务计划程序
  2. 左窗格:选择任务计划程序库
  3. 右窗格:单击创建任务...(注意:这是获得正确触发器的唯一方法)
  4. 在“创建任务”对话框中:
    • 常规选项卡 -- 为您的任务提供名称
    • 触发器选项卡——单击新建...并选择工作站解锁
    • 操作选项卡——单击新建...,然后单击浏览...以找到您的脚本
    • 条件选项卡——取消选中仅当计算机使用交流电源时才启动任务

另外,我调整了脚本中的路径以读取

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
Run Code Online (Sandbox Code Playgroud)


Ivo*_*pse 22

如果您已经有一个脚本:

将登录脚本分配给用户或组

  • 打开计算机管理。
  • 在控制台树中,单击用户。

在哪里?系统工具/本地用户和组/用户

  • 双击要为其分配登录脚本的用户。
  • 单击配置文件选项卡。
  • 在登录脚本字段中,输入要分配给该用户的登录脚本的路径和名称,然后单击确定。

否则这里有一个来自微软的方便的“HowTo”

创建登录脚本

您可以使用登录脚本来分配将在用户登录到特定计算机时执行的任务。脚本可以执行操作系统命令,设置系统环境变量,调用其他脚本或可执行程序。Windows Server 2003 家族支持两种脚本环境:命令处理器运行包含批处理语言命令的文件,Windows Script Host (WSH) 运行包含 Microsoft Visual Basic Sc​​ripting Edition (VBScript) 或 Jscript 命令的文件。您可以使用文本编辑器来创建登录脚本。登录脚本通常执行的一些任务包括:

  • 映射网络驱动器。
  • 安装和设置用户的默认打印机。
  • 收集计算机系统信息。
  • 更新病毒签名。
  • 更新软件。
  • 以下示例登录脚本包含使用 Active Directory 的 VBScript 命令
  • 服务接口 (ADSI) 可根据用户的组成员身份执行三项常见任务:

它通过调用 WSH 网络对象的 MapNetworkDrive 方法和 WSH 网络对象的 UserName 属性将 H: 驱动器映射到用户的主目录。它使用 ADSI IADsADSystemInfo 对象来获取当前用户的专有名称,而后者又用于连接到 Active Directory 中的相应用户对象。建立连接后,将使用用户的 memberOf 属性检索用户所属的组列表。使用 VBScript 的 Join 函数将组名的多值列表加入单个字符串,以便更轻松地搜索目标组名。

如果当前用户是脚本顶部定义的三个组之一的成员,则脚本将用户的 G: 驱动器映射到组共享驱动器,并将用户的默认打印机设置为组打印机。创建示例登录脚本

  • 打开记事本。
  • 复制并粘贴或键入以下内容:

    Const ENGINEERING_GROUP     = "cn=engineering"
    Const FINANCE_GROUP         = "cn=finance"
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    Set wshNetwork = CreateObject("WScript.Network")
    wshNetwork.MapNetworkDrive "h:",
    "\\FileServer\Users\" & wshNetwork.UserName
    
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" &
    ADSysInfo.UserName)
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Engineering\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\EngLaser"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\Plotter"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Finance\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\FinLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Human Resources\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\HrLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\HrLaser"
    
    End If
    
    Run Code Online (Sandbox Code Playgroud)
  • 在文件菜单上,单击另存为。

  • 在“保存在”中,单击与域控制器的 Netlogon 共享文件夹对应的目录(通常为 SystemRoot\SYSVOL\Sysvol\DomainName\Scripts,其中 DomainName 是域的完全限定域名)。
  • 在另存为类型中,单击所有文件。
  • 在文件名中,键入文件名,后跟 .vbs,然后单击保存。WSH 使用 .vbs 扩展名来标识包含 VBScript 命令的文件。


Bru*_*eod 16

我能想到的最简单的方法是将它放在启动文件夹中的 .bat 文件中。

更复杂的方法是将批处理文件添加到注册表中

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Run Code Online (Sandbox Code Playgroud)

注册表项。

  • 如果你想在 **any** 用户登录时运行这个,你需要把它放在 All Users 启动文件夹 (*%allusersprofile%/Start Menu\Programs\Startup*),或者在 Run 部分做一个条目LocalMachine reg hive: *HKLM\Software\Microsoft\Windows\CurrentVersion\Run*) (10认同)