我正在尝试运行一个批处理文件,该文件会停止打印后台处理程序、删除后台处理程序队列并重新启动后台处理程序。我从互联网上窃取的执行文件删除的实际命令如下:
del %systemroot%\System32\spool\printers\* /Q /F /S
最初运行它的系统是具有管理员级别用户的 Windows 7 Professional 计算机,因此它可以正常运行。现在我试图在普通级别用户帐户上运行此批处理文件。我发现当时有效的解决方法是使用 runas 作为快捷方式启动批处理文件。作为一个简短的例子:
Runas /savecred /user:DOMAIN\Administrator "File Path\File.bat"
我确实启用了本地管理员帐户并设置了密码保护,到目前为止,这对我来说效果很好。但现在我尝试在 Windows 10 Professional 中使用此快捷方式,结果却好坏参半。
如果系统已从 Windows 7 升级,则快捷方式和批处理文件均能正常工作。如果系统预装了 Windows 10,则除原始管理员帐户外,任何用户或管理员级别的用户帐户均无法使用批处理文件。尝试删除后台处理程序文件时,批处理文件会给出拒绝访问错误。运行快捷方式或以管理员身份登录的批处理文件也不起作用,但需要在上下文菜单下提升“以管理员身份运行”权限。
我猜是 Windows 7 中保留了某些策略或安全设置,而 Windows 10 通常不允许这样做。有人知道这可能是什么吗?
或者,如果有更好的方法可以做到这一点,我完全赞成,但我希望根本不提示用户。
答案1
根据这些信息,解决此类权限问题的一个通用方法可能是:
- 作为管理员,在计算机上创建一个新的事件日志源,例如以下 Powershell 命令将执行:
New-EventLog-LogName 应用程序-源 PrinterFixer
- 仍以管理员身份创建一个新的事件日志条目,例如使用以下 Powershell 命令:
Write-EventLog -LogName Application -Source PrinterFixer -EntryType Warning -EventId 1 -Message “打印机问题,重置队列”
打开事件日志 (Eventvwr) 查找新事件。从那里您可以右键单击它并选择“将任务附加到此事件”。
按照向导设置将在创建上述事件时运行的计划任务。这可以是用于清除目录等的批处理文件。
完成后,打开 Windows 计划任务并导航到包含“事件查看器任务”的文件夹。从这里,您可以编辑新任务以确保它以所需用户身份运行、在未登录时运行等。
任务和触发器完成后,您可以以用户身份登录并运行相同的命令来创建事件,例如
Write-EventLog -LogName Application -Source PrinterFixer -EntryType Warning -EventId 1 -Message “打印机问题,重置队列”
这将导致任务运行。也可以使用 Eventcreate.exe,但无论哪种情况,我都可以为创建事件日志条目的用户想象一个快捷方式。
这种方法的一个好处是,您可以审核谁执行此操作以及用户执行此操作的频率,并有助于排除根本原因。如果需要,可以自动执行设置任务和事件日志的步骤。