【问题标题】:Run PsExec from C# with admin right without UAC在没有 UAC 的情况下使用管理员权限从 C# 运行 PsExec
【发布时间】:2021-02-19 12:38:41
【问题描述】:

我想从用户空间的C# 应用程序启动运行需要管理员权限的PSExec 操作。当然,复杂的是,我不想要 UAC。

我想运行这样的操作:

PsExec.exe -i -s powershell.exe -command "whoami *> 'out.txt'"
  • 如果我以管理员权限在 cmd/powershell 中运行示例,则可以。
  • 如果我在 C# exe 中运行带有verb = "runas" 进程的示例,它就可以工作
  • 如果我在 C# exe 中使用带有用户/密码/域的进程运行示例,则无法正常工作

我尝试了很多其他的东西,但我没有找到一个好的技巧。 (带有凭据的 powershell,运行 .bat 或 .ps1,...)

我对所有解决方案和/或是否真的可行都持开放态度。

【问题讨论】:

  • 为什么要使用psexec?你想做什么?您可以在代码中创建和执行 Powershell 管道,不需要psexecProcess.Start。另一方面,您不能绕过 UAC 警告。如果这么简单,作为安全措施将毫无用处
  • 这听起来像XY problem。你想解决什么问题?

标签: c# uac psexec


【解决方案1】:

你不能这样做。 Windows 是一个安全的操作系统,您需要成为管理员才能执行管理员任务。

暂时假设 UAC 不存在。

  • 假装我们回到了 Windows XP
  • 您是标准用户
  • 并且您想使用PsExec 作为System 帐户运行某些东西

你不能。不允许标准用户像那样危害系统的安全性。

可以这样做的唯一方法就是以管理员身份运行。

  • 在 Windows XP 上,您必须注销,然后让管理员为您登录

Windows Vista 和 UAC 比完全切换到另一个用户更容易:

  • 您可以在 UAC 对话框中输入他们的凭据(或按继续)

但您不能随意将自己提升为管理员 - 这违背了拥有安全操作系统的全部目的。

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 2021-08-25
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多