Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写以系统权限运行的Windows 8软件?_Windows_Winapi_Windows 8 - Fatal编程技术网

如何编写以系统权限运行的Windows 8软件?

如何编写以系统权限运行的Windows 8软件?,windows,winapi,windows-8,Windows,Winapi,Windows 8,我为标题中糟糕的措辞道歉,但这里有更多的上下文 我最近买了一台Windows8笔记本电脑,注意到Norton已经预装并以系统级权限运行。因此,我想到必须有某种方式让第三方应用程序以系统权限运行 然而,在谷歌搜索了很多次之后,我无法确定是API调用、注册表设置还是其他完全使Norton能够做到这一点的原因,所以我决定询问so社区。如何编写以系统权限运行的应用程序?服务可以配置为以多个不同帐户运行,包括本地服务,网络服务,系统,或任何用户帐户 不建议使用系统,因为任何安全问题都可能导致机器完全受损,

我为标题中糟糕的措辞道歉,但这里有更多的上下文

我最近买了一台Windows8笔记本电脑,注意到Norton已经预装并以系统级权限运行。因此,我想到必须有某种方式让第三方应用程序以系统权限运行


然而,在谷歌搜索了很多次之后,我无法确定是API调用、注册表设置还是其他完全使Norton能够做到这一点的原因,所以我决定询问so社区。如何编写以系统权限运行的应用程序?

服务可以配置为以多个不同帐户运行,包括
本地服务
网络服务
系统
,或任何用户帐户

不建议使用
系统
,因为任何安全问题都可能导致机器完全受损,但它是可用的


这由和/或的
lpServiceStartName
参数配置。将空指针作为
CreateService
“\\LocalSystem”
的此参数传递到
ChangeServiceConfig
,以使用本地系统帐户。

服务可以配置为作为多个不同帐户运行,包括
本地服务
网络服务
系统
,或任何用户的帐户

不建议使用
系统
,因为任何安全问题都可能导致机器完全受损,但它是可用的


这由和/或的
lpServiceStartName
参数配置。将空指针作为
CreateService
“\\LocalSystem”
的此参数传递到
ChangeServiceConfig
,以使用本地系统帐户。

将GUI应用程序作为本地系统运行是个坏主意。最好的方法是同时拥有一个GUI应用程序(以登录用户的身份运行)和一个服务(以系统的身份运行),并让它们根据需要使用任何合适的IPC方法进行通信。这可能是诺顿实际上正在做的事情


但是,可以让系统服务在用户会话中作为系统启动应用程序。为此,请使用
DuplicateTokenEx
复制进程安全令牌,然后与
TokenSessionId
选项一起使用。这将在系统上下文中,但在用户会话中,为您提供一个令牌,您可以使用该令牌启动可执行文件。(可能还有其他问题;例如,您可能还需要更改工作站和桌面上的权限。)

将GUI应用程序作为本地系统运行是个坏主意。最好的方法是同时拥有一个GUI应用程序(以登录用户的身份运行)和一个服务(以系统的身份运行),并让它们根据需要使用任何合适的IPC方法进行通信。这可能是诺顿实际上正在做的事情


但是,可以让系统服务在用户会话中作为系统启动应用程序。为此,请使用
DuplicateTokenEx
复制进程安全令牌,然后与
TokenSessionId
选项一起使用。这将在系统上下文中,但在用户会话中,为您提供一个令牌,您可以使用该令牌启动可执行文件。(可能还有其他问题;例如,您可能还需要更改工作站和桌面上的权限。)

有没有办法在不首先启动服务的情况下直接以系统权限级别实例化应用程序?@merlin:需要服务,但是预先安装的
调度程序
服务将在管理员请求时启动任何具有系统权限的任意可执行文件。不过,Microsoft提供的任务调度器的配置是一个计算机管理问题,应该在超级用户上讨论,而不是这样。我似乎无法使用任务调度器运行和查看GUI应用程序。如果我真的自己写了一个服务,我能绕过SYSTEM user?下的GUI限制吗?你“不能运行”吗?为什么?我的蜘蛛感觉在这里刺痛。有些可疑的事情正在发生……这意味着我可以看到流程,但无法与之交互。有没有一种方法可以在不首先启动服务的情况下直接在系统权限级别实例化应用程序?@merlin:需要服务,但是预先安装的
调度程序
服务将在管理员请求时启动任何具有系统权限的任意可执行文件。不过,Microsoft提供的任务调度器的配置是一个计算机管理问题,应该在超级用户上讨论,而不是这样。我似乎无法使用任务调度器运行和查看GUI应用程序。如果我真的自己写了一个服务,我能绕过SYSTEM user?下的GUI限制吗?你“不能运行”吗?为什么?我的蜘蛛感觉在这里刺痛。有些可疑的事情正在发生……这意味着我可以看到这个过程,但我无法与之交互。为什么需要在这种环境下运行?如果你想解决一个特别的问题,也许你应该告诉他问题是什么。现在的情况是,你在问“下班后我怎样才能拿到钥匙进入我银行的保险库?”问题是你为什么要这么做?如果你想使用你的现金,答案是“不要拿钥匙,使用自动取款机!”为什么你需要在这种情况下运行?如果你想解决一个特别的问题,也许你应该告诉他问题是什么。现在的情况是,你在问“下班后我怎样才能拿到钥匙进入我银行的保险库?”问题是你为什么要这么做?如果你想使用现金,答案是“不要拿钥匙,使用自动取款机!”