Lod*_*ijk 5 windows winapi scheduled-tasks logoff windows-scripting
我有一些脚本,我希望每次用户注销时运行.我想创建一些以编程方式设置注销脚本的东西.例如,可以执行exe或cmd文件以将注销脚本添加到Windows执行的注销脚本列表中.因此,Windows API函数或Windows shell命令将更可取,但我找不到这样的函数或命令来帮助解决这个问题.
我检查了本地组策略编辑器在您使用它向组策略添加注销脚本时所做的注册表编辑,但是它确实做了很多我不能确定的模仿.例如,它进行了大量的注册表编辑,并且它在某些注册表项中使用数字代码,在某些值中使用二进制数据.我不知道这些值代表什么.
我已经尝试了GPEdit所做的更改的子集,希望这样做仍然可行.例如,我将对HKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logoff所做的更改导出并导入到另一台PC上,但这不起作用,并且GPEdit MMC没有意识到我甚至已经制作了更改.
正如我所说,一组Windows API函数或Windows shell命令将是更好的,如果有人知道一些可能有帮助,但如果有人知道一种方法解码GPEdit以我可以模拟的方式制作的信息堆然后,只要它们稳定,我就不反对进行注册表更改.
无论我找到和使用什么解决方案,它都必须能够自动可靠,因为它将通过psexec远程执行到许多计算机上,并且它也将被包含在自动设置过程中,用于未来设置的PC.
不幸的是,对于谷歌而言,这似乎是一个难题,因为人们试图做的许多其他事情都有许多我要查询的关键词,但实际上并不是同一个主题.例如,关闭/注销挂钩用于运行应用程序或远程注销用户.
如果有人是Windows注册表或MMC向导,并且认为看到注册表的转储更改了GPEdit MMC在做同样的事情时会有所帮助那么就这么说了,我会让它可用,因为我已经捕获它.我怀疑这是要走的路,但我已经开始研究如何创建MMC管理单元工具; 我的想法是,也许GPEdit管理单元本身可以进行逆向工程,这样我就能以一种简单的方式看到它正在做什么.这不会快到任何地方,因为我看到的.adm文件中没有一个看起来有这样的设置,并且gpedit.msc文件似乎没有任何可以在明文部分中提供它的东西,尽管那里是一个看起来像胡言乱语的部分,所以也许那里有某种魔法.
从 Windows Vista 开始,任务计划程序可以执行此操作。对于Windows XP及以前的版本,似乎没有一个好的答案。XP 没有下面列出的“与用户会话断开连接时”触发器。
Windows 中有两个用于计划任务的主要命令行实用程序:at.exe 和 schtasks.exe。就其本身而言,两者似乎都没有提供可以从 GUI 界面获得的所有选项(尽管 schtasks 非常接近)。但是,任务计划程序具有描述计划任务的 XML 格式,并且 schtasks.exe 具有从 XML 文件导入任务的选项。
要创建注销脚本,请创建一个描述您要创建的任务的 XML 文件。确保使用“与用户会话断开连接时”触发器,并选择从“任何用户”(需要提升权限)和“从本地计算机连接”注销。将所有所需的注销操作(例如注销脚本)设置为任务操作。
Microsoft 有一个用于为任务计划程序开发任务的示例列表,其中包括 XML 示例。您可以在此处找到此列表。
或者,您可以使用 GUI 工具设置一次任务,然后右键单击任务列表中显示的任务并选择“导出”。您将看到一个保存对话框,允许您以 XML 格式保存任务。
然后,我使用以下命令编写任务设置脚本:
schtasks /create /tn "Task Name Here" /XML "path to xml file here" /ru domain\username /rp "password"
Run Code Online (Sandbox Code Playgroud)
注意:部分功劳应归于 user606602 对于使用任务调度程序的建议,尽管他建议使用 GUI 应用程序,根据我的问题,该应用程序对此不起作用。我尝试用他建议的脚本版本编辑他的答案,然后接受,但同行评审拒绝了编辑。
| 归档时间: |
|
| 查看次数: |
11785 次 |
| 最近记录: |