【问题标题】:PowerShell command to check whether an application is running with elevated privileges用于检查应用程序是否以提升的权限运行的 PowerShell 命令
【发布时间】:2022-01-15 01:36:10
【问题描述】:

我需要一个 PowerShell 命令或脚本来检查我的控制台应用程序是否以管理员身份运行。如果它没有以管理员身份运行,我将停止它并使用脚本再次运行。

如果 PowerShell 命令不可用,还有其他方法可以检查吗?

提前致谢。

【问题讨论】:

标签: windows powershell batch-file


【解决方案1】:

你可以用我的Test-ProcessElevated cmdlet(太长了,我已经发到GitHub gist了)。

例如:

# from pipeline:
Get-Process notepad | Test-ProcessElevated

# from parameter:
Test-ProcessElevated $(Get-Process notepad)

# it returns boolean
if (ps notepad | Test-ProcessElevated)
{
    Write-Host 'notepad is running elevated.'
}

# dwm.exe is running in a different session:
ps dwm | Test-ProcessElevated

我已经在 Windows PowerShell 5 和 PowerShell 7 中对其进行了测试。

【讨论】:

  • 嘿,它正在工作并给出预期的结果。谢谢?
  • 我遇到了一个异常。你能帮帮我吗...使用“1”参数调用“IsProcessElevated”的异常:“OperProcessToken failed”在第 161 行 char:16 返回 [SecurityUtils.Win32]::IsProcessElevated($Process) : NotSpecified : (:) , MethodInvocationException + FullyQualifiedErrorId: Win32Exception + Category Info 记事本没有运行提升。
  • 我刚刚注意到,当我的应用程序以提升的方式运行时,它会抛出此异常。并且在 if 条件下,它仍然给出进程没有以提升的方式运行。
  • 事实证明,即使您是管理员,打开在不同会话中运行的进程也不是一项简单的任务。需要额外的权限。我会调查一下。
  • @ShivaniG 我已经解决了这个问题。查看更新的脚本:gist.github.com/0xfeeddeadbeef/ce341bbca071099fd6952abab896aaac
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2021-01-09
  • 2014-07-15
  • 2019-07-14
  • 2022-01-12
  • 2018-04-03
  • 2016-12-16
相关资源
最近更新 更多