尝试了解从服务运行 rundll32 与通过 cli 运行 rundll32 之间的区别

尝试了解从服务运行 rundll32 与通过 cli 运行 rundll32 之间的区别

我试图了解在启动时运行的 NT_AUTHORITY LOCAL SERVICE 帐户下运行与由用户运行之间的区别。我有一个可执行文件,它会生成一个正在运行的子进程rundll32.exe <SOME DLL NAME HERE>。当我以用户身份或从 cli 运行 exe 时,DLL 由 rundll32.exe 加载,并且一切正常(我只是打开 calc.exe 作为实验)。但是,当我重新启动计算机并且 exe 由服务启动时,我在 Process Explorer 中看到 rundll32.exe 正在运行,具有我期望它生成的所有相同参数,但结果不一样,没有由于运行 dll 而创建的 calc.exe 进程。为了弄清楚这是如何工作的,我需要了解哪些事情?还有哪些其他方法可以尝试从以与用户或 cli 相同的方式执行子进程的服务加载 exe/dll?

编辑:

同样,我创建了另一个 exe,它直接加载 DLL(而不是像上面的例子那样生成 rundll32.exe 并加载它),当我以用户身份单击它来运行它时,exe 会加载 DLL 并生成 calc.exe。但是当从服务运行同一个 exe 时,不会生成 calc.exe。

相关内容