如果另一个用户运行相同的批处理文件,RunAs /savecred 要求输入密码

Jil*_*448 2 runas

我有一个脚本,我在其中使用了runas /savecred. 第一次它问我密码。后来它没有问我,它工作正常。但是如果另一个用户登录到同一台服务器并运行相同的脚本,它会要求他输入密码。

如何为启动该批处理文件的任何用户存储密码。

我已经检查了开始 > 运行 > 控制 userpasswords2 > 高级 > 管理密码。它仅在我登录时显示存储的用户名。我们如何在同一台机器上存储相同的用户名和密码?

C. *_* M. 13

简短的回答:不要这样做。你只会将你的系统打开到一个巨大的,我的意思是巨大的系统安全漏洞:一旦你 /savecred,你就会将你的管理员密码保存到用户配置文件中,无条件地,让他们随时以任何方式使用他们喜欢。这意味着,一旦保存,他们就可以启动一个控制台窗口(CMD 提示符),输入“ runas /savecred /user:administrator cmd.exe ”,然后立即启动一个具有完全管理员权限的新命令控制台来做他们想做的任何事情。您可能希望他们能够这样做!

我认为您真正想要的是允许任何用户运行特定命令而无需提升(管理员)权限或需要输入管理员密码。为此,现代 Microsoft(tm) Windows 操作系统中有一个安全且有效的解决方案:将程序设置为具有程序所需的特定访问权限的计划任务运行。你可能会创建一个特定的用户帐户对这一计划的,或者你可能只是使用admin /系统凭据,这一点,也只有这个,程序。就是这样..

首先,您需要设置一个计划任务,就像任何其他计划任务一样。您必须为其分配一个特定的命令行(因此,如果您需要向任务传递参数,则必须使用脚本或批处理文件来创建“参数文件”以将参数传递给程序,或者使用其他一些方法这样做......这个解决方案并不完美!)。然后,您可以为其分配所需的任何安全权限。给它取个合适的名字——并避免在名字中使用空格以保持简单;当您的用户需要运行该程序时,我们将使用该名称来实际运行该程序。此外,不要安排运行任务的实际时间,因为我们将在稍后调用它以按需运行,而不是始终在特定时间运行。

创建任务后,下一个问题将是“我如何运行它?” 好吧,你要么创建一个快捷方式,要么创建一个批处理/脚本文件,它会调用计划任务来运行:“ schtasks /run /tn name-you-gave-the-task-above ”。因此,如果您创建了一个名为“AutoAddLocalPrinters”的任务(例如,一个常见的管理任务),您将创建一个批处理文件或快捷方式来运行命令“ schtasks /run /tn AutoAddLocalPrinters ”(如果您确实将其命名为空格,您必须将整个名称放在引号中——这就是我避免名称中使用空格的原因)。

请注意,它唯一需要管理员权限或密码的时间是在设置计划任务时。只需运行一次设置的任务就不需要密码,不需要密码,最重要的是,不会全局盲目地将管理员密码保存到用户配置文件中。它被保存为计划任务的一部分,它只影响那个任务,并且不会让用户修改或更改它,或者用它启动一个新的提升的控制台提示等。

此外,您可以调整计划任务的权限以仅允许某些用户组运行它,等等。您可以通过创建特殊用户帐户或批处理/脚本文件来进一步微调它,您可以使用这些文件检查和验证所需条件的任何权限。例如,如果您有孩子,您可以创建一个脚本,在允许他们启动聊天程序之前检查他们是否已经过了就寝时间.. ;-) 简而言之,您几乎可以做任何您想做或需要做的事情来验证并控制程序如何运行(或拒绝)。

最后,这样做的另一个优点(或缺点......):它适用于几乎每个版本的 Windows,您可以在其中安排任务并运行“schtasks”命令。例如,我的理解是 Windows Home 版本无论如何都会忽略“runas”的 /savecred 选项,因此您必须始终提供密码。计划任务将使用您设置的凭据运行,即使在家庭版中也是如此。

脚注:我提到这一点是因为我通常从系统 PATH 变量中删除许多程序路径,并将“C:\sys\admin;C:\sys\bat;C:\sys\bin”添加到系统路径中。然后在“C:\sys*”文件夹下(显然你需要创建它们),我创建了单独的批处理/脚本/快捷方式文件,它们调用了真正的程序或计划任务。通过这种方式,我可以完全控制允许/禁止各种程序运行的对象、内容、时间、地点和方式。它还有助于防止愚蠢的错误——我实际遇到的一个错误是我的最终用户之一试图转换文件并在不知道他们在做什么的情况下运行“转换”命令。由于 Windows 已经有一个“转换”命令,可以将 FAT 转换为 NTFS,所以他们设法做的就是转换他们的文件系统。他们很幸运,它仍然有效,因为他们的计算机并不关心文件系统是 FAT 还是 NTFS。但是现在我总是有一个 C:\sys\bat\convert.bat 文件,它会拍打它们并告诉它们在尝试运行此命令之前与我交谈.. ;-) 我对许多其他具有潜在危险的人也这样做或在错误使用/错误键入时可能会严重导致问题的高级用户命令。

祝你好运!

编辑 2020-09-18 添加:

  1. 作为管理员(即使是在个人/家用计算机的环境中,不仅仅是专业的),养成始终保护文件系统和文件的习惯。不要向用户授予读、写、执行或其他类型的权限,除非它们在上下文中确实有意义。我强烈建议不要仅仅因为它可以减少管理上的麻烦而给予额外的访问权限——由误用引起的麻烦,无论是良性的还是恶意的,远远超过首先为确保系统安全所做的额外工作。我个人什至为自己设置并使用了两个用户帐户,一个是管理帐户,一个是“普通用户”帐户,用于我的日常和常规使用。尽管在它们之间切换很麻烦,但当涉及到其他人试图“破解”我管理的系统时,它使我免于更糟糕的问题,
  2. 我尚未查看我的原始帖子以针对 Windows XP/2003/7 之后的 Windows (tm) 版本更新它,Microsoft (tm) 不再支持这些版本。我在 2016 年左右切换到基于 Linux 的操作系统,并且不再“更新”基于 Microsoft Windows 的系统的问题以进一步验证。

  • 添加注意:如果您已经 ***EVER*** 在用户帐户下运行“*runas /savecred ...*”,则必须使用以下命令删除保存的凭据:*rundll32.exe keymgr。 dll, KRShowKeyMgr* -- 您还可以看到用户可以与“runas”一起使用的任何凭据的列表。 (2认同)