|
阅读:162回复:8
通过“计划任务”而非“启动”文件夹实现自启动
勾选设置中的“自启动”后,当前是用“启动”文件夹来实现的,根据我的实测,windows的开机自启动顺序如下:
1. 计划任务 2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 4. “启动”文件夹 其中“启动”文件夹是最慢的,这导致在开机后的几十秒内是无法打字的,此时连QQ等聊天软件都已经启动成功了,但就是打不了字,得等yong.exe启动后才能打字 建议改成用计划任务实现自启动,这是最快的,几乎在进入桌面的瞬间就能启动,这样开机后能立马打字,不会出现打开浏览器后想搜个东西打不了字的尴尬 |
|
|
板凳#
发布于:2026-01-21 23:57
我觉得启动文件夹更简单,也更合理,你希望计划任务可以自己按需设置到计划任务,并不需要周大改程式。
计划任务本身从名称看也不是用于开机启动程式用途。 |
|
|
地板#
发布于:2026-01-22 01:35
|
|
|
4楼#
发布于:2026-01-22 01:39
|
|
|
6楼#
发布于:2026-01-22 08:44
|
|
|
7楼#
发布于:2026-01-22 10:08
<#
.SYNOPSIS 创建或删除计划任务 yong_onlogon .DESCRIPTION - 当前用户登录时执行 yong.exe - 可按需运行 - 失败后 1 分钟重试 3 次 - 并发任务停止现有实例 - 不受电源限制 .PARAMETER u 如果指定 -u,将删除任务而不是创建 #> param( [switch]$u ) # =============================== # UTF-8 控制台代码页保障 # =============================== try { $cp = (chcp) -replace '[^\d]', '' if ($cp -ne '65001') { chcp 65001 > $null } [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {} $taskName = "yong_onlogon" $tempXml = Join-Path $env:TEMP "$taskName.xml" if ($u) { Write-Host "正在删除计划任务 $taskName..." schtasks /Delete /TN $taskName /F exit 0 } # =============================== # 管理员权限检查 # =============================== if (-not ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsIdentity]::GetCurrent() ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "错误:需要管理员权限运行此脚本!" exit 1 } # 当前用户 SID $userSid = [Security.Principal.WindowsIdentity]::GetCurrent().User.Value # =============================== # 内嵌 XML(与用户无关,单文件交付) # =============================== $taskXml = @" <?xml version="1.0" encoding="UTF-16"?> <Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.4"> <Triggers> <LogonTrigger> <Enabled>true</Enabled> <UserId>$userSid</UserId> </LogonTrigger> </Triggers> <Principals> <Principal> <LogonType>InteractiveToken</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <AllowStartOnDemand>true</AllowStartOnDemand> <StartWhenAvailable>true</StartWhenAvailable> <MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <RestartOnFailure> <Interval>PT1M</Interval> <Count>3</Count> </RestartOnFailure> <!-- 禁用“如果任务运行超过时间,停止任务” --> <ExecutionTimeLimit>PT0S</ExecutionTimeLimit> </Settings> <Actions Context="Author"> <Exec> <Command>C:\yourPath\yong\w64\yong.exe</Command> </Exec> </Actions> </Task> "@ # =============================== # 写入临时 XML 并创建任务 # =============================== $taskXml | Set-Content -Path $tempXml -Encoding Unicode Write-Host "正在创建计划任务 $taskName..." schtasks /Create /TN $taskName /XML $tempXml /F Remove-Item $tempXml -Force Write-Host "计划任务 $taskName 已创建成功!" #以上内容保存为后缀名为ps1的powershell脚本 #以管理员权限运行即可创建yong.exe所需的任务计划 #-u参数可删除所创建的任务计划 |
|