没有管理员权限在具有管理员权限的登录用户上下文中启动桌面应用程序

时间:2020-02-26 15:15:15

标签: c# .net security winapi uac

我只想运行仅在“程序文件”和“程序文件(x86)”文件夹中安装的本地桌面应用程序,该应用程序应以用户权限登录时的管理员权限运行。我已经用谷歌搜索并且了解了一些。

根据我的想法是必需的:-

  1. 带有Socket Client的File Explorer GUI
  2. 服务
  3. 使用Socket Server启动可执行的本地应用程序(控制台应用程序)

注意:File Explorer之间的通信将使用套接字客户端和服务器进行。该服务将在系统上下文中启动本地应用程序服务器。

想象一下已安装了文件资源管理器,服务和应用程序启动服务器。 使用文件浏览器,将选择该应用程序,并将所选的应用程序信息发送到服务器。服务器将检查请求的路径是否来自受信任的路径。

如果来自受信任的路径,则服务器将从“ winlogon.exe”获取句柄并获取访问令牌的句柄,然后复制访问令牌并调整其特权(默认系统特权将存在,而我不这样做)不想让系统拥有全部特权),然后使用CreateProcessAsUser启动应用程序。

启动后,将UI置于前台。该应用程序需要在具有管理员权限的用户上下文中运行。

我的问题如下:-

  1. 要实现这一目标,我需要启用 服务?
  2. 如果需要互动,则 用户和本地服务器正在使用套接字发生,而用户没有 直接与服务互动,只是想知道我是否 遵循以下Microsoft安全措施 文档还是我违反了? https://docs.microsoft.com/en-us/windows/win32/services/interactive-services
  3. 我们还有其他方法可以用admin启动应用程序吗? 登录的用户上下文中是否具有特权,而没有实际的管理员特权?

目标操作系统是Windows 10 1803和1809。

1 个答案:

答案 0 :(得分:0)

看看工具psexecpaexec(它们几乎是相同的,主要区别是后者是开源的)。

这些工具可让您以另一个用户和/或在另一台计算机上启动进程。这也应该在服务中起作用。