如何(如果可能)你-当你运行作为提升用户-启动一个程序与非管理权限,当你没有登录凭据。
场景:一个运行非提升状态的程序执行一个提升状态的子进程(通过ShellExecute和“runas”动词)。此应用程序需要执行一些需要管理权限的操作(替换ShellExecute的.EXE文件,而它位于ProgramFiles层次结构中),一旦完成,它应该执行原始程序,但没有提升的状态。
如何从提升的程序运行未提升的原始应用程序?它应该在与最初运行时相同的用户上下文下运行,但我没有提供凭据。我“只是”想在运行原始应用程序时从用户中剥离管理令牌。
1条答案
按热度按时间tzcvj98z1#
Delphi 中有相当多的缺少导入/定义,所以我不得不自己定义它们。但下面是雷米提供的链接中的C++代码在 Delphi 中的完成实现:
有两个例程--一个简单地返回TRUE/FALSE来表示成功或失败,另一个在不能执行时引发异常。
编辑:DeleteProcThreadAttributeList的重新声明是因为这个例程在标准 Delphi 源代码中的声明是错误的-它使用了TProcThreadAttributeList而不是PProcThreadAttributeList。