我已经制作了一个用于加载选美的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/