ora*_*rad 10 windows powershell start-process elevated-privileges
也许有一种方法可以使用我找不到的Start-Process cmdlet 来完成它?我在StackOverflow上找到的其他相关Q/A就是这样,这和所有这些都提供了一个解决方案来使用自定义C#代码.我的问题是具体的,有没有直接的方法在PowerShell中执行此操作?即你是在一个升级的PS控制台,并希望以非管理员身份运行一个进程.
Mat*_*sen 12
你可以指定TrustLevel
with runas.exe
,有效地运行"受限制"
runas /trustlevel:0x20000 "powershell.exe -command 'whoami /groups |clip'"
Run Code Online (Sandbox Code Playgroud)
您应该在输出中看到令牌whoami
中的Administrators
组被标记为"仅用于拒绝"
另一种有限的方法:让 Windows 资源管理器为您启动它
PS C:\> explorer.exe "C:\windows\system32\cmd.exe"
Run Code Online (Sandbox Code Playgroud)
只需使用完整路径和扩展名即可。但它不接受参数。
我尝试创建一个批处理文件。但探险家拒绝发射.BAT
或.CMD
.
编辑:您还可以使用gsudo来执行此操作:
gsudo --integrity medium MyApp.exe
Run Code Online (Sandbox Code Playgroud)
当您深入研究此问题时,如链接任务所述,无法从提升的进程运行 UAC“非”提升的进程。由于这正是我所需要的,并且 runas 解决方案对我不起作用,因此我将 Microsoft 提供的代码解决方法转换为使用计划任务来启动“非”提升的进程。
从提升的 powershell 提示符将 powershell.exe 作为“非”提升的进程运行的示例:
$apppath = "powershell.exe"
$taskname = "Launch $apppath"
$action = New-ScheduledTaskAction -Execute $apppath
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date)
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname | Out-Null
Start-ScheduledTask -TaskName $taskname
Start-Sleep -s 1
Unregister-ScheduledTask -TaskName $taskname -Confirm:$false
Run Code Online (Sandbox Code Playgroud)
上述 powershell 命令仅适用于 Windows Server 2012 / Windows 8 及更高版本。
或者您可以使用SCHTASKS.EXE应用程序来覆盖大多数 Windows 版本:
$apppath = "powershell.exe"
$taskname = "Launch $apppath"
schtasks /create /SC ONCE /ST 23:59 /TN $taskname /TR $apppath
schtasks /run /tn $taskname
Start-Sleep -s 1
schtasks /delete /tn $taskname /F
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5866 次 |
最近记录: |