AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 734320
Accepted
Art.Vandelay05
Art.Vandelay05
Asked: 2015-11-06 14:59:19 +0800 CST2015-11-06 14:59:19 +0800 CST 2015-11-06 14:59:19 +0800 CST

允许标准用户在没有提升提示的情况下以本地管理员身份运行程序

  • 772

我在不允许用户本地管理员权限的环境中工作。完全没有。这非常好,但如果员工必须具有本地管理员权限才能运行程序或安装需要提升权限的软件,即使只是进行安装,也可能会很痛苦。有一个簿记用户,他每月从我们的供应商那里收到一张 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

windows
  • 4 4 个回答
  • 69790 Views

4 个回答

  • Voted
  1. Pimp Juice IT
    2015-11-06T18:23:43+08:002015-11-06T18:23:43+08:00

    以管理员身份运行而不是管理员

    允许非管理员用户以本地管理员帐户运行程序但没有提升提示

    以下是设置解决方法以使应用程序作为本地管理员的另一个帐户运行的说明。但是,执行该过程的帐户不需要是 PC 上的本地管理员。


    Windows 解决方法(请参阅下面的所有注释)

    例子

    1. 创建用户名(域或本地): ProxyRunAsLocalAdmin

    2. 创建密码(域或本地): <SomeComplexPassword>

    笔记

    • 此帐户设置为local admin在需要以管理员权限运行某些内容的 PC 上,而无需实际授予将运行它(执行)本地管理员权限的最终用户。

    • 对于本地计算机上的非管理员不起作用的事情,这是最后的选择,在这些事情中,给予他们的帐户(最终用户和/或某些组)显式registry和file system级别的对象访问权限不起作用。

    安全

    • 除了域管理员之外,任何人都不能拥有这些信息——即不要与最终用户共享。

    使用 RUNAS 创建快捷方式(这可能是D:\Setup.exe)

    快捷方式Properties示例

    TARGET字段示例(下):

    %systemroot%\system32\runas.exe /user:domain\ProxyRunAsLocalAdmin /savecred "C:\Program Files\BlueStacks\HD-StartLauncher.exe"
    

    START IN例子:"C:\Program Files\BlueStacks"

    在此处输入图像描述

    重要提示: 无论路径中是否有空格,都可能需要Start In:字段周围的双引号。


    附加设置说明

    • 为此,您可以创建域用户帐户或本地 PC 用户帐户,并在需要此类解决方案时为其授予本地计算机的本地管理员权限。
    • 当您以需要执行该过程的用户身份登录 PC 时,您必须使用“ RUNAS 等”运行快捷方式,而无需自己成为本地管理员。当您执行此操作时,您将需要输入凭证 - 将其缓存一次,但在随后的每次使用 RUNAS 和 /SAVECRED 再次从相同的用户帐户配置文件执行该过程时 都不需要它。
    • 此帐户的此密码不与任何人共享,只有域\系统管理员拥有此信息,并将其插入每个用户每台机器所需的任何地方——这也是每个 Windows 用户帐户配置文件类型的交易。因此,如果您为用户创建新配置文件并且需要此解决方案,则需要再次运行快捷方式,以便他们的配置文件也缓存凭据(由管理员)。

    安全说明

    1. 您不能通过组策略限制该帐户的本地登录访问,否则该帐户将无法以交互方式运行 RUNAS——为了安全起见,我已经尝试过,但我无法使其正常工作。
    2. 由于这是一个具有本地管理员权限的缓存凭据,因此从技术上讲,保存该凭据的最终用户可以将相同的 RUNAS 技术应用于另一个 EXE 或通过命令行(如果允许的话)。这意味着您作为管理员需要权衡此解决方案的优点和缺点,包括风险。也许允许您值得信赖的人员或项目一遍又一遍地进行或需要,而无需实际授予最终用户本地管理员权限。

    控件

    您确实为此解决方案设置了一些控件,例如 . . .

    • 选择您希望允许从哪些机器运行 runas
    • 选择您希望从中运行的每台计算机上的哪些用户配置文件
    • 您必须转到此机器上的用户配置文件并在初始时间输入凭据,无论
    • 由于本地或 AD 帐户是本地计算机 IP 地址的成员,因此暴露于 PC 级别的本地计算机,而不是域级别
    • 不要给这个帐户任何网络资源访问任何东西(根据需要,每台个人电脑只有本地电脑管理员)
    • 如果您想大规模禁用此功能(假设使用域帐户),则只需禁用该帐户或更改密码
    • 确保其他人知道其中一些后果等,并让他们批准,这样您就不是决定使用或不使用它的人
    • 4
  2. Best Answer
    Art.Vandelay05
    2015-11-07T12:08:22+08:002015-11-07T12:08:22+08:00

    我找到了一种使用 Powershell 实现目标的方法。首先,必须在用户计算机上运行一个脚本(仅一次)以生成加密密码,然后将其存储到文件中。注意:存储的密码文件不是包含纯文本本地管理员密码的 txt 文件。它是 ConvertFrom-SecureString cmdlet 的输出。

    首先,脚本输入密码并将其存储到文件中。这只需要在目标计算机上运行一次。

    # Enter encrypted password once and store to file; define variables 
    $path = "C:\Folder\Folder\"
    $passwd = Read-Host "enter desired password" -AsSecureString
    $encpwd = ConvertFrom-SecureString $passwd
    $encpwd > $path\filename.bin
    

    现在,用户将运行的脚本以本地管理员身份从 dvd 启动程序。将 DVD 插入光驱后,她将从桌面快捷方式运行脚本。启动脚本后,程序运行完美,她无需向我或其他管理员寻求帮助(她喜欢)就可以做到这一点。

    # define path to store password and input password 
    $path = "C:\folder\folder"
    # get the encrypted password from the path
    $encpwd = Get-Content $path\filename.bin
    # convert file to secure string 
    $passwd = ConvertTo-SecureString $encpwd
    # define needed credential 
    $cred = new-object System.Management.Automation.PSCredential 'computer name\account name',$passwd
    # go to DVD drive launch setup.exe as user with privileges to launch the program with no user input required
    Set-Location D:\
    Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe
    

    这篇 Powershell.org 文章有助于获得我的答案http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/

    • 1
  3. Jonas Lear
    2015-11-06T15:08:21+08:002015-11-06T15:08:21+08:00

    好吧,幸运的是,如果您消除了本地管理员,那么您剩下的唯一真正的选择就是 CMD 行。Powershell 很好,但我认为您也可以使用它运行批处理。

    每一个的唯一缺点是,如果用户知道如何打开脚本,她可以看到你在其中输入的内容,这是一个巨大的禁忌。解决这个问题的唯一方法是在代码中编写一个命令,以在打开脚本时锁定脚本,而不是执行,提示输入密码。

    也许是专门针对 UAC 编写的批处理或 powershell?

    • 0
  4. Helenri
    2018-01-12T23:54:17+08:002018-01-12T23:54:17+08:00

    绕过 UAC 的另一个选项是在系统帐户下运行程序,因为该帐户在 UAC 系统上没有 UAC。网上有一些源代码。完整的解决方案在 robots.de/runasadminen.html 此解决方案也可用于非管理员帐户。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve