C++ 将进程作为本地系统运行

C++ 将进程作为本地系统运行,c++,elevation,C++,Elevation,我有一个作为管理员进程运行的常规程序。但它并没有我需要的所有特权。如何提升此进程以作为本地系统帐户运行 我不想使用任何外部工具来实现此提升。如果我能调用一些Win32函数来实现它,那就太理想了。我还愿意编写和运行Windows服务,以便将其权限传递给相关进程 有人请给我一个线索。我的搜索只是让我一圈又一圈 程序将会话ID发送到服务 服务调用OpenProcessToken和DuplicateTokenEx来创建本地系统令牌 服务调用SetTokenInformation更改令牌会话ID以匹配程序

我有一个作为管理员进程运行的常规程序。但它并没有我需要的所有特权。如何提升此进程以作为本地系统帐户运行

我不想使用任何外部工具来实现此提升。如果我能调用一些Win32函数来实现它,那就太理想了。我还愿意编写和运行Windows服务,以便将其权限传递给相关进程

有人请给我一个线索。我的搜索只是让我一圈又一圈

  • 程序将会话ID发送到服务
  • 服务调用OpenProcessToken和DuplicateTokenEx来创建本地系统令牌
  • 服务调用SetTokenInformation更改令牌会话ID以匹配程序的
  • 服务调用DuplicateHandle来创建令牌的句柄
  • 服务向程序发送句柄
  • 程序使用收到的句柄调用SetThreadToken

  • 程序将至少有一个具有本地系统权限的线程。这就足够了。

    常规程序不应作为本地系统运行。您需要本地系统权限的任务是什么?我想删除所有文件。这是我的系统,所以我想做什么就做什么。当然,这只是个玩笑。但你明白了。我是一名专业开发人员,不寻求基本的软件原则。我正在寻找一个技术问题的技术解决方案。编写一个windows服务并将其作为本地系统运行。据我所知,您必须将您的程序注册为服务才能这样做。Google CreateServiceAPI“我正在寻找一个技术问题的技术解决方案”。那么,告诉我们问题所在。这是另一个XY问题。有一个隐含的假设是可能的,甚至有一个假设是通过提升实现的,但提升是UAC的概念,
    本地系统
    甚至不参与UAC。事实上,由于这是一个XY问题,我想微软从来没有费心实现Y部分。我们只能猜测为什么所有需要本地系统权限的事情都不能在服务中完成。因为本地系统没有权限做普通程序可以做的事情,所以不能在服务中完成。这可能是一些初学者MS VB程序员造成的死锁情况?也许你可以向他们展示一些基本的软件原理。