批处理脚本,Powershell,并且不触发Windows中的UAC

|| 我正在寻找以提升模式(运行身份管理员)运行批处理文件的方法,这样它就不会触发UAC提示用户交互。除其他事项外,我们在登录脚本中进行了一些注册表编辑,这些编辑触发UAC提示运行的每个注册表。 我意识到这种做法违背了UAC的目的,但是如果能以某种方式在启用了UAC的计算机上运行批处理文件,那就太好了。 这些批处理文件必须能够在没有任何用户交互的情况下运行(它们主要是登录脚本和某些管理脚本)。我们没有使用Active Directory域,因此希望有一个针对所有AD域的解决方案。 到目前为止,我发现的解决方案如下: 完全禁用UAC-我们通常会这样做,但是在某些情况下我们可能无法禁用它。 为我们希望在提升模式下运行的批处理文件创建快捷方式。转到快捷方式>快捷方式选项卡>高级>单击“以管理员身份运行” 此解决方案似乎有效,但是该快捷方式的初始运行会导致出现UAC提示。在批处理文件中运行的所有命令都不会引起UAC提示。接近解决方案,但是最好不要收到任何提示。 3。 使用\'runas \'命令运行批处理文件。 我已经尝试过了,但是它仍然没有达到阻止UAC提示的高度。 另外,使用echo \'password \'|提供密码的runas .....方法似乎无法正常工作,因此我总是不得不输入密码。 我当时在想,但我尚未真正研究的另一件事是,在启用了UAC的环境中,PowerShell脚本能更好地运行/工作吗?是否经过Windows'trust \'认证的Powershell脚本,并允许它们不受阻碍地运行而不触发UAC? 根据我的阅读,除禁用UAC之外,这些都无法解决。但是我只是想看看是否有人可以对此主题提供更多的启示。 谢谢, 干杯     
已邀请:
        当前用户有权访问的注册表操作本身不会触发UAC提示。 但是,如果以未提升管理员身份运行,则使用带有要求提升的清单的应用程序将提示。 您是否要使用ѭ0进行批处理?如果是这样,请替换为
reg.exe
(使用
cmd.exe
),或者更好的是PowerShell \的内置注册表支持。 例如。
get-itemproperties \'HKLM:\\SOFTWARE\\Classes\\Folder\'
不需要提升权限(因为每个人都可以读取该键),但是在该键上设置属性将需要提升的PSH会话。 一种替代方法,如果您执行需要管理访问权限的操作(需要使用ACL修改对某些对象的访问权限,从而限制了对管理员的修改)。或者,如果没有输入管理员帐户的凭据,则非管理员无法执行UAC的操作。 考虑使用Task Scheduler:用户登录时触发,但在特定的提升的管理员帐户下配置。 简介:确实需要至少了解您正在做的一件事,这些事情会详细触发UAC。     
        没有正式的方法可以绕过UAC提示输入您的应用程序。如果您具有帐户密码,有几种方法可以使程序以ѭ4run身份运行(与runas方法相同)。 您可以使用以下
Power-Shell
脚本以
administrator
身份启动程序,而无需询问密码: 您需要将用户密码保存为安全字符串:
$pass = Read-Host -AsSecureString
ConvertFrom-SecureString $pass | out-file pass.txt
然后,您可以通过以下方式使用存储的密码将文件作为“ 4”运行:
$pass = import-SecureString (get-content pass.txt)
$startinfo = new-object System.Diagnostics.ProcessStartInfo
$startinfo.UserName = \"administrator\"
$startinfo.Password = $pass
$startinfo.FileName = \"your batch script file name\"
$startinfo.UseShellExecute = $true
[System.Diagnostics.Process]::Start($startinfo)
    
        设置将要运行的计划任务需要在设置时一次同意,而不再需要。由于您提到了这些是登录脚本,因此在登录时运行的计划任务应完全满足您的需求。     

要回复问题请先登录注册