我有一个应用程序,我必须以管理员身份运行.
该应用程序的一小部分是使用Process.Start启动其他应用程序
启动的应用程序也将作为管理员运行,但我宁愿看到它们作为"普通"用户运行.
我该如何做到这一点?
/约翰/
也许有一种方法可以使用我找不到的Start-Process cmdlet 来完成它?我在StackOverflow上找到的其他相关Q/A就是这样,这和所有这些都提供了一个解决方案来使用自定义C#代码.我的问题是具体的,有没有直接的方法在PowerShell中执行此操作?即你是在一个升级的PS控制台,并希望以非管理员身份运行一个进程.
我正在编写NSIS安装程序,安装程序会根据需要在Windows 7/vista上"以管理员身份"升级.我需要在安装结束时运行已安装的程序,并且不希望使用与安装程序相同的权限启动它.
常规NSIS exec命令使用与安装程序相同的权限运行子进程.
有一个用于NSIS的UAC插件,但它上面的文档并不是很好,而且似乎是新的.我不想使用那个插件.
理想情况下,我正在寻找一个小的.exe我可以包括在没有UAC提升的情况下启动目标程序.这存在吗?
还有其他建议吗?
谢谢!
我的程序作为一个提升的进程运行,并启动新的进程Process.Start().
出于安全原因,我希望将这些新进程作为非提升程序运行.
怎么做?
我的应用程序有一个主要问题.我有一个应用程序和更新程序作为单独的exe文件.当更新可用时,更新程序会执行更新,并在进程完成时启动我的应用程序.主要问题是 - 应用程序安装在程序文件文件夹中,因此更新程序需要UAC管理员权限,这没关系,但是当我需要运行我的应用程序时,更新程序需要以普通用户身份运行它,因为如果它以管理员身份运行和drop不起作用(不是应用程序问题,UAC阻止它).我已经尝试了几种不同的解决方案,甚至这一种: 如何在Vista(.NET)中运行NOT raise
它没有帮助我 - 我的应用程序是以管理员身份运行的.
我的应用程序按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当我的应用程序可以捕获其信任级别时运行.