windows-7 - 使用Powershell脚本作为启动外部程序的登录脚本(组策略)?

标签 windows-7 powershell uac group-policy pageant

我已经制作了一个用于加载选美的Power Shell脚本(Windows SSH身份验证代理)
用我的私钥。简而言之,脚本只不过是以下两行:

$tool = "pageant.exe"
&$tool $files.ToArray()
$files是一个字符串列表,其中包含必须加载的所有我的私钥。

我对脚本的工作没有任何问题,因为当我从Powershell执行此脚本时,它可以完美地完成其工作
安慰。

每当我登录到帐户时,我都想执行此脚本,并通过添加Powershell登录脚本来执行此操作
使用组策略编辑器(gpedit.msc)创建组策略,该脚本也会执行,并且实际上确实会加载pageant.exe工具。

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

所以我的第一个问题是,从我自己的Powershell控制台启动脚本和启动脚本之间有什么区别?
从组策略(登录脚本)?

我也进行了一些调查,发现一些不同之处。首先是当我从自己的控制台启动脚本时,启动的选美工具在任务管理器中具有UAC虚拟化标志。启动时未标记此属性
从登录脚本组策略中。

第二件事是,当我禁用UAC时,脚本会根据登录脚本组策略执行。因此,我认为这与UAC有关,但我不知道如何解决。我希望该脚本在UAC为
也启用。

第二个问题是此UAC虚拟化标志是什么?它如何影响流程的工作? 第三个也是最后一个问题是如何使脚本正常工作?

最佳答案

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

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

但是您的登录脚本在未启用虚拟化的情况下运行,因此,其修改/读取文件的尝试不会进入重定向的VirtualStore,而是直接进入程序文件。

因此,您必须在没有虚拟目录的情况下使所有各方正常工作。如果可执行文件具有 list ,最好声明与Windows 7的兼容性,则关闭虚拟化功能。但是,如果尝试写入程序文件,则在没有虚拟化的情况下可能无法正常工作。

注意:注册表写入HKLM也会被虚拟化。

关于windows-7 - 使用Powershell脚本作为启动外部程序的登录脚本(组策略)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8279684/

相关文章:

windows - 如何将本地文件替换为 SVN 存储库中的版本?

unit-testing - 程序崩溃时如何终止程序? (这应该只是通过单元测试而不是永远卡住)

regex - 如何使用正则表达式捕获多个未知数量的值

powershell - 如果操作需要提升,则在PowerShell中显示UAC提示

security - 如何设置系统日期/时间而不提示 UAC

git - TortoiseGit 无法在 Windows 7 上安装上下文菜单

python - 如何在 Windows 7 上安装支持 Python 的 GDB

windows-7 - Windows7 中的 Log4Net 本地主机寻址问题

powershell - 如何在 VSCode 中使用带有 powershell 的 cmder?

powershell - 使用 Start-Job 同时运行多个脚本 block (而不是循环)