我知道如何使用以下流程从进程启动具有管理员权限的进程:
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.Verb = "runas";
Run Code Online (Sandbox Code Playgroud)
其中proc是System.Diagnostics.Process.但是,如何做相反的事情呢?
如果您所处的进程已经提升,那么如何在没有管理员权限的情况下启动新进程?更准确地说,我们需要使用与Windows资源管理器相同的权限级别启动新进程,因此如果禁用UAC则无需更改,但如果启用了UAC,但我们的进程正在升级,则需要执行某项操作因为我们正在创建一个虚拟驱动器,如果它是使用提升的权限创建的,并且Windows资源管理器运行速度不高,则不会显示.
随意将标题更改为更好的标题,我无法想出一个好的描述.
也许有一种方法可以使用我找不到的Start-Process cmdlet 来完成它?我在StackOverflow上找到的其他相关Q/A就是这样,这和所有这些都提供了一个解决方案来使用自定义C#代码.我的问题是具体的,有没有直接的方法在PowerShell中执行此操作?即你是在一个升级的PS控制台,并希望以非管理员身份运行一个进程.
我的程序作为一个提升的进程运行,并启动新的进程Process.Start().
出于安全原因,我希望将这些新进程作为非提升程序运行.
怎么做?
我有一个类似安装程序的应用程序,我必须在Vista上运行.但是从那里开始,我必须开始一个非提升的新流程.任何提示如何使用Delphi2007做到这一点?
我的应用程序有一个主要问题.我有一个应用程序和更新程序作为单独的exe文件.当更新可用时,更新程序会执行更新,并在进程完成时启动我的应用程序.主要问题是 - 应用程序安装在程序文件文件夹中,因此更新程序需要UAC管理员权限,这没关系,但是当我需要运行我的应用程序时,更新程序需要以普通用户身份运行它,因为如果它以管理员身份运行和drop不起作用(不是应用程序问题,UAC阻止它).我已经尝试了几种不同的解决方案,甚至这一种: 如何在Vista(.NET)中运行NOT raise
它没有帮助我 - 我的应用程序是以管理员身份运行的.
最近我遇到了一个问题,我需要从提升的应用程序打开网页。我需要以非提升方式打开浏览器,所以我环顾四周,找到了这个解决方案
这肯定会解决我的问题,除了CreateProcessAsUser不接受 URI 作为文件名,执行将失败,错误消息为“文件名、目录名或卷标语法不正确”
有人可以告诉我是否有办法通过 CreateProcessAsUser 启动网站,或者是否有类似的 API 可以完成这项工作。请注意,我的实际应用程序始终处于提升状态,因此我无法使用通常的Process.Start()或CreateProcess()ShellExecute()
我的应用程序按requestedExecutionLevel设置运行highestAvailable.
如何运行一个没有升级的流程?
我尝试了以下但它不起作用:
Process.Start(new ProcessStartInfo {FileName = "foo.exe", Verb = "open"})
Run Code Online (Sandbox Code Playgroud)
我尝试了以下信任级别来使用Win32 API启动我的进程,但它们都没有正常工作:
0
1260: This program is blocked by group policy. For more information, contact your system administrator.
0x1000
The application was unable to start correctly (0xc0000142). Click OK to close the application.
0x10000
Process starts then hangs
0x20000
All options are not available
0x40000
Runs as admin
Run Code Online (Sandbox Code Playgroud)
如果我tskill foo从提升的应用程序运行,它会以正确的权限重新启动foo.
我需要的是一个解决方案,我不必指定信任级别.该过程应该自动以正确的信任级别开始,就像tskill工具foo.exe在正确的信任级别重新启动一样.用户选择并运行foo.exe,因此它可以是任何东西.
如果我可以以某种方式获得进程的信任级别,我可以轻松地执行此操作,因为foo.exe当我的应用程序可以捕获其信任级别时运行.