.net Windows中的权限提升
我正在编写一个应用程序,它将由具有用户权限的GUI部分和作为服务使用本地系统权限的服务器部分组成。GUI部件有时需要执行一些需要高权限(管理员/本地系统)的操作。GUI应用程序可以请求服务执行此操作,服务也可以执行此操作(当然是在身份验证和授权之后) 但是,如果服务可以运行具有本地系统权限的命令,该命令将在用户桌面的上下文中运行(以便用户可以与命令的GUI交互),则会更方便。可能吗.net Windows中的权限提升,.net,windows,security,winapi,operating-system,.net,Windows,Security,Winapi,Operating System,我正在编写一个应用程序,它将由具有用户权限的GUI部分和作为服务使用本地系统权限的服务器部分组成。GUI部件有时需要执行一些需要高权限(管理员/本地系统)的操作。GUI应用程序可以请求服务执行此操作,服务也可以执行此操作(当然是在身份验证和授权之后) 但是,如果服务可以运行具有本地系统权限的命令,该命令将在用户桌面的上下文中运行(以便用户可以与命令的GUI交互),则会更方便。可能吗 NET中的解决方案更可取,但C/C++也不错。有四种方法可以从非提升GUI进程运行提升代码: 将提升的逻辑移动到单
NET中的解决方案更可取,但C/C++也不错。有四种方法可以从非提升GUI进程运行提升代码:
CreateProcess()
在需要时运行它ShellExecute/Ex()
和“runas”
动词或第三方启动新的提升进程。您可以使用不同的.exe文件,也可以使用具有不同命令行参数的相同.exe文件,这并不重要STARTUPINFO
结构中指定用户的桌面第四个选项看起来像我想要实现的(尽管1或2目前可能有效)。但我还没有完全理解令牌应该如何构造。使用WTSQueryUserToken()检索它不意味着它是以用户权限而不是系统权限(这是我所需要的)运行的吗?我发现这也很有用:。