我在不允许用户本地管理员权限的环境中工作。完全没有。这非常好,但如果员工必须具有本地管理员权限才能运行程序或安装需要提升权限的软件,即使只是进行安装,也可能会很痛苦。有一个簿记用户,他每月从我们的供应商那里收到一张 DVD,其中包含急需的报告。为了查看报告并进行备份,她必须运行 DVD 上的可执行文件。可执行文件需要管理员权限才能安装。因此,自从我来到这里以来,每个月我都会运行 .exe,UAC 会出现,并且我会提供运行安装程序所需的信息。
如果这是一个一次性程序,我将使用 Microsoft 应用程序兼容性工具包噱头绕过 UAC http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your-trusted-vista -applications/但是,由于这是每个月发给她的新 DVD,我需要某种工具,她可以自己使用此操作。
我环顾了 Server Fault,也做了 Google-Fu,但没有发现任何有用的东西。我可能是处于特殊情况的人之一。
我想用 Poweshell 来制作工具。理想情况下,我希望她能够放入 DVD,然后启动 Poweshell 工具(毫无疑问,从她的桌面快捷方式)查看 DVD 驱动器并以本地管理员身份运行 setup.exe 文件,而无需 UAC 提示,无需她提供任何凭据。
到目前为止,我所拥有的是一些拼凑在一起的垃圾。我不是 Powershell Jedi。我是 Poweshell 学徒。我有我需要的一半。我仍然需要存储密码,因此不必在每次运行脚本时都定义和输入密码。我希望它尽可能流畅并尽可能少点击。
对于我选择使用本地管理员帐户的凭据,因为该密码不会更改。本地管理员帐户将完成工作。我需要将该帐户信息存储在计算机上,以便 Powershell 每次运行脚本时都可以检索该帐户。因此,这将需要是路径变量中的加密文件。
# define path to store password and input password
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe
我可能会为此获得一些反对意见,但我知道在某个地方我需要在现有变量或新变量中定义并放入“”Read-Host“一些关于输入密码的文本”-AsSecureString“”。我必须将密码输入到该过程中。我试过几个地方。想法?智慧?不可能的?
Windows 7 专业版 Powershell v4
以管理员身份运行而不是管理员
以下是设置解决方法以使应用程序作为本地管理员的另一个帐户运行的说明。但是,执行该过程的帐户不需要是 PC 上的本地管理员。
Windows 解决方法(请参阅下面的所有注释)
例子
笔记
此帐户设置为
local admin
在需要以管理员权限运行某些内容的 PC 上,而无需实际授予将运行它(执行)本地管理员权限的最终用户。对于本地计算机上的非管理员不起作用的事情,这是最后的选择,在这些事情中,给予他们的帐户(最终用户和/或某些组)显式
registry
和file system
级别的对象访问权限不起作用。安全
使用 RUNAS 创建快捷方式(这可能是
D:\Setup.exe
)快捷方式
Properties
示例重要提示: 无论路径中是否有空格,都可能需要Start In:字段周围的双引号。
附加设置说明
安全说明
控件
您确实为此解决方案设置了一些控件,例如 . . .
我找到了一种使用 Powershell 实现目标的方法。首先,必须在用户计算机上运行一个脚本(仅一次)以生成加密密码,然后将其存储到文件中。注意:存储的密码文件不是包含纯文本本地管理员密码的 txt 文件。它是 ConvertFrom-SecureString cmdlet 的输出。
首先,脚本输入密码并将其存储到文件中。这只需要在目标计算机上运行一次。
现在,用户将运行的脚本以本地管理员身份从 dvd 启动程序。将 DVD 插入光驱后,她将从桌面快捷方式运行脚本。启动脚本后,程序运行完美,她无需向我或其他管理员寻求帮助(她喜欢)就可以做到这一点。
这篇 Powershell.org 文章有助于获得我的答案http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/
好吧,幸运的是,如果您消除了本地管理员,那么您剩下的唯一真正的选择就是 CMD 行。Powershell 很好,但我认为您也可以使用它运行批处理。
每一个的唯一缺点是,如果用户知道如何打开脚本,她可以看到你在其中输入的内容,这是一个巨大的禁忌。解决这个问题的唯一方法是在代码中编写一个命令,以在打开脚本时锁定脚本,而不是执行,提示输入密码。
也许是专门针对 UAC 编写的批处理或 powershell?
绕过 UAC 的另一个选项是在系统帐户下运行程序,因为该帐户在 UAC 系统上没有 UAC。网上有一些源代码。完整的解决方案在 robots.de/runasadminen.html 此解决方案也可用于非管理员帐户。