首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用powershell脚本作为登录脚本(组策略)来启动外部程序?

使用powershell脚本作为登录脚本(组策略)来启动外部程序?
EN

Stack Overflow用户
提问于 2011-11-26 16:04:40
回答 3查看 6.1K关注 0票数 1

我已经制作了一个power shell脚本,它用我的私钥加载pageant (一个windows身份验证代理)。简而言之,脚本不超过以下两行:

代码语言:javascript
运行
复制
$tool = "pageant.exe"
&$tool $files.ToArray()

$files是一个字符串列表,它包含必须加载的所有私钥。

我对脚本的工作没有问题,因为当我在powershell控制台上执行它时,它的工作做得很好。

每当我登录到我的帐户时,我都想执行这个脚本--我通过使用组策略编辑器(gpedit.msc)添加一个powershell登录脚本组策略来执行这个脚本,脚本也会执行,并且实际上确实加载了pageant.exe工具。

但是,使用pageant.exe工具(putty和plink)的工具不起作用。它不识别选美身份验证代理。

因此,我的第一个问题是,从我自己的powershell控制台启动脚本与从组策略(登录脚本)启动脚本有什么区别?

我也有一些调查,我看到了一些差异。首先,当我从自己的控制台启动脚本时,已启动的选美工具在我的任务管理器中有一个UAC虚拟化标志。此属性在从登录脚本组策略启动时不会被标记。

第二件事是,当我禁用UAC时,脚本从登录脚本组策略执行工作。所以我认为这与UAC有关,但我不知道如何解决这个问题。当UAC也启用时,我希望脚本能够工作。

第二个问题是什么? UAC虚拟化标志是什么?它如何影响进程的工作?的第三个(也是最后一个问题)是如何让我的脚本工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-28 20:10:50

为了完整起见,我给自己的问题加上了答案。

  1. 从我自己的powershell控制台启动脚本与从组策略(登录脚本)启动脚本有什么区别? 答:区别在于,我的用户是管理员组的一部分,该组将以更高的权限运行脚本。当您以管理员身份登录时,Windows将生成一个标准用户访问令牌和一个管理员访问令牌。最后一个令牌将用于运行具有提升权限的程序(这没有UAC虚拟化)。现在,当我从我自己的powershell控制台启动脚本(它是用标准访问令牌启动的)时,已启动的选美是使用UAC虚拟化运行的。如果使用pageant的工具以不同的模式运行,那么我的问题就出现了。
  2. UAC虚拟化标志是什么?它如何影响进程的工作? A:看看这个链接
  3. 我怎样才能让我的剧本发挥作用? 答:您可以使用Kate提供的解决方案(不要选中run具有最高特权选项),也可以将批处理文件添加到运行powershell脚本的启动文件夹中。这将在标准用户访问令牌和启用UAC虚拟化的情况下运行脚本。
票数 0
EN

Stack Overflow用户

发布于 2011-11-26 19:53:27

它看起来是UAC虚拟化。此标志意味着所有对受保护系统区域的写入尝试都被重定向到用户配置文件:C:\Users\<username>\AppData\Local\VirtualStore中的C:\Users\<username>\AppData\Local\VirtualStore。当UAC被禁用时,此重定向将被关闭。

启用UAC后,任何向Program写入的尝试,例如,都将被重定向到VirtualStore中的相应目录。稍后,当程序读取文件时,它们也会从重定向目录中看到它们。

但是,您的登录脚本在没有启用虚拟化的情况下运行,因此它修改/读取文件的尝试不会转到重定向的VirtualStore,而是直接转到Program。

因此,您必须使您的所有各方在没有虚拟化目录的情况下工作。如果可执行文件有清单,最好声明与Windows 7的兼容性,那么虚拟化将被关闭。但是,如果它试图写入Program,它可能在没有虚拟化的情况下不能正常工作。

注:对HKLM的注册表写入也被虚拟化。

票数 2
EN

Stack Overflow用户

发布于 2011-11-28 17:25:35

有许多方法可以关闭UAC虚拟化;最简单的方法是在与exe相同的文件夹中包含外部清单(在您的例子中,它将被命名为pageant.exe.manifest)。这可能会抑制提升,但您的写作可能会失败。虚拟化正在影响您,这意味着pageant.exe必须写入受保护的区域,如果没有虚拟化或提升,您将被拒绝访问。

因此,我要做的是将组策略排除在外。设置运行在登录处(触发器选项卡,单击新建,更改顶部下拉列表)运行的调度任务(单击“开始”并键入“任务”以启动任务调度程序,然后单击右侧的“创建任务”)以运行脚本(“操作”选项卡,单击“新建”),并将其提升(“常规”选项卡,检查“以最高权限运行”)。您必须同意UAC一次来设置提升的任务。然后你就完成了,pageant.exe会写到其他应用程序可以读取它的受保护区域。

如果在设置好这个之后,其他应用程序继续从虚拟商店读取,而不是真正的应用程序,只需删除虚拟存储中的文件/文件夹即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8279684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档