Local System是Windows核心组件所运行的账户,是系统内置的特殊账户,不能在“本地用户和组”中进行管理。Local System拥有比Administrator更高的权限,是会话管理器(Smss.exe)、Windows子系统系统(Csrss.exe)以及本地安全授权子系统(Lsass.exe)等的运行账户。

    Local System账户加载默认用户的配置文件,也就是HKEY_USERS\.DEFAULT,保存的配置文件及默认文件位于C:\Users\Default中。

使用PsExec.exe程序即可实现以system用户运行程序。现在该程序包含在PSTools工具集中。

PsExec.exe现在也有64位的版本。

1.使用管理员身份运行powershell(也可以运行cmd.exe,在两者中操作都是一样的),转到PsExec所在的目录。

2.运行PsExec -i -s cmd.exe即可使用system用户的身份运行cmd程序。这里的-s参数主要是用于以system身份运行程序,而-i参数主要用于运行的程序显示出界面。如果没有这个参数,则运行的程序只能在后台运行,无法对其进行操作。

注意:不同版本的PsExec.exe程序的命令可能有所差异。后面的参数可能不一样。在选择参数的时候要注意两个参数的解释,一个是:

Run the program so that it interacts with the desktop of the

specified session on the remote system. If no session is

specified the process runs in the console session.

一个是:

Run the remote process in the System account.

3.按下win + r 键打开“运行”对话框(也可以在搜索框中操作),输入“cmd.exe”按“确定”即可打开cmd程序。

4.在两个cmd.exe程序中运行whoami即可知道是以何种身份在运行该程序。如下图中两个cmd.exe程序中所示。在“任务管理器”中可以看到两个cmd.exe程序的“用户名”那列,一个是以“paitouxi”身份,另一个是以“SYSTEM”身份在运行程序。

以system身份运行程序_第1张图片

5.在以system运行的cmd.exe中打开的程序都是以system的身份运行的。在以管理员身份运行的cmd.exe中打开的程序都是以管理员的身份运行的,并且不会弹出“用户账户控制”对话框。分别在两个cmd.exe中输入“regedit.msc”打开“注册表编辑器”(注意:要在c:\Windows\System32输入,否则可能会显示:'regedit.msc' 不是内部或外部命令,即找不到该程序)。也可以直接在powershell中运行PsExec.exe -i -s regedit.msc即可以system身份运行“注册表编辑器”。由于“注册表编辑器”不能像cmd.exe那样可以同时存在几个进程,所以在以一个身份运行“注册表编辑器”后必须将其关闭后再以其他身份运行。下面以查看注册表项HKEY_LOCAL_MACHINE\SAM\SAM中的内容为例,查看两种用户运行的时有什么区别。下图分别显示了两种情况下打开“注册表编辑器”时显示HKEY_LOCAL_MACHINE\SAM\SAM下的子项的内容。可以看到管理员没有权限查看该注册表项中子项的内容。

   (1)管理员身份打开“注册表编辑器”。

以system身份运行程序_第2张图片

    (2)system身份打开“注册表编辑器”。

以system身份运行程序_第3张图片