因此,我有一个客户需要运行具有更高权限的软件,但用户使用受限帐户,并且由于多种原因我不愿意向他提供密码。
我正在寻找一种方法让程序启动时无需提示输入管理员密码,然后我遇到了runas
。
这是我正在使用的命令:
runas /user:Administrator /savecred "Path\To\Software.exe"
问题是,它第一次要求输入密码,但输入密码后什么也没发生。无论我运行命令多少次,程序都不会启动。
路径正确并且管理员帐户没有问题,但仍然没有结果。
我还检查了 2 个服务正在运行(不记得它们的名字,但它们与以不同权限运行的应用程序有关)。
你们有解决方案吗?
答案1
如果您的计算机上启用了用户帐户控制(UAC)(我希望答案是“是”),“runas”命令不会提升您的权限。即它运行该应用程序,但不具有管理权限。
但是,请尝试以下 Windows PowerShell 命令:
Start-Process "Path\To\Software.exe" -Verb "runas"
当然,您必须在 Windows PowerShell 而不是命令提示符中输入此命令。
话虽如此,这绝对不是解决你的问题的办法。微软的政策是不提供或者完全拒绝任何鼓励使用管理权限的手段。(该政策在 2003 年安全灾难发生后生效。)微软提供的最接近的东西是应用程序兼容性工具包,它允许您忽略应用程序的清单并以有限的权限运行。这对那些愚蠢到不检查清单中是否包含所需内容的应用程序很管用。
当然,我确实会时不时地注意到第三方安全解决方案,它们可以满足您的需求。但由于不受欢迎,它们很快就会消失。
答案2
我们发现,如果 runas 配置文件未完全加载(即 runas UID 之前未完全登录到机器),它将无法正常工作......
CBB 和 LTSB 1607。
答案3
不管从哪个角度看,使用程序存储凭证都是不好的。如果用户能够获取存储凭证的任何部分,那么他们就能够解密密码(提示:他们将能够访问它们,否则程序将无法运行),除非程序使用某种标记化。即使它进行了标记化,只要他们“传递哈希值”(正如他们在安全领域所说的那样),就可以以管理用户的身份执行其他命令(据我所知,令牌没有加密/解密,因此它们是故意分开的;即使它们是/曾经是,用户也可以解密它们)。
由于您不想授予该人管理员访问权限,因此最好的办法是授予他们对该程序尝试使用的文件和文件夹的特定访问权限。在给出好的建议之前,需要有关正在访问的程序或文件/文件夹的更多详细信息。如果您使用文件Security
夹属性框中的选项卡授予他们访问权限,那么他们可能能够在没有管理员权限的情况下运行该程序。如果不是,那么该程序制作得不是很好。或者,您可以使用虚拟机或让用户可以远程访问另一个桌面,以便他们只能访问该桌面,而不能访问他们正在使用的系统。
如果您想查看用户在 Windows 上使用的文件和文件夹,可以使用该工具Process Monitor
。此工具将列出机器上所有进程正在执行的大量信息(您可以过滤数据)。文件、文件夹、线程、网络、注册表和分析事件均受该工具监控。它来自 SysInternals,是位于在 TechNet 上。我和他们没有任何关系,但是我使用他们的工具已经很多年了。
答案4
我发现唯一可能导致你所描述的情况的是如果管理员帐户未设置密码那么它就不会以这种方式启动,该账户必须有密码你必须输入它,您不能不输入密码,然后在系统询问时按回车键。
当我看到该行为时,它确实会出现有关帐户限制的错误,如果您从快捷方式运行,它不会显示足够长的错误以供人类读取,但如果从命令提示符或 powershell 窗口运行,则错误会保留。
当然,还要确保管理员帐户已启用(默认情况下不是),并且您(或您的 IT 部门,如果是公司计算机,而不是您的计算机)没有向管理员帐户添加任何基于 GPO 或其他限制,以使其能够启动某些东西。(由于您说帐户没有问题,我怀疑这不是您情况的原因,但包括以防其他人也需要知道它)