在 Windows 7 中从受限用户帐户按需运行任务计划程序任务

在 Windows 7 中从受限用户帐户按需运行任务计划程序任务

我的目标是让有限的用户能够运行需要管理权限的 netsh 脚本:

netsh wlan stop hostednetwork
netsh wlan start hostednetwork

我从我的管理员帐户创建了一个任务计划程序任务,该任务以提升的权限运行此脚本,并在其中保存了我的管理员密码。它成功了。但从受限用户帐户看不到该任务。

我尝试从受限用户任务计划程序创建相同的任务 - 没有发生,它告诉我用户无权创建该任务。

尝试从受限用户运行 schtasks.exe,它也没有显示我想要运行的任务。

有没有办法将我从管理帐户创建的任务与受限用户共享,以便他能够按需运行该任务?或者授予他自己创建任务的权限?

答案1

转到 C:\Windows\System32\Tasks 找到相关任务,并向您希望能够访问该任务的用户分配“读取和执行”权限。确保分配给“仅当前对象”。然后,该任务将从受限用户那里可见并可运行,如果您在其中保存了凭据并选中“无论用户是否登录都运行”,该任务就会起作用。

答案2

是的,这是一个可怕的问题。选择的答案不再有效。我正在使用事件日志作为解决方法:

  1. 为您的任务注册“事件”触发器,例如“应用程序”、“应用程序”、30204(此任务的神奇数字)

  2. 用此 ID 记录事件。为了从命令行/批处理执行此操作,我编写了一个虚拟的 3 行 .Net 控制台应用程序。

    using (var eventLog = new EventLog("Application"))
    {
        eventLog.Source = "Application";
        eventLog.WriteEntry("EventLogTriggeer", EventLogEntryType.Information, int.Parse(args[0]));
    }

就我而言,我已经解决了在暂存环境中自动部署的安全性问题。GitHub 向我的 node.js 后端发出 POST 请求,该后端在 IIS AppPool Identity 下运行,并具有对该文件夹的 r/o 访问权限。它验证哈希签名,并执行:

// delegate to priviledged task
exec('%SystemDrive%\\apps\\EventLogTrigger 30204', (err, stdout, stderr)=> /* ... */);

剩余部分通过计划任务完成,该任务在具有修改 inetpub 中文件权限的用户下运行部署脚本。任务是针对每个服务器及其上的每个网站单独配置的,因此路径是硬编码的:

C:\inetpub\ta\autodeploy.cmd

相关内容