我在从系统帐户启动流程时遇到问题。我只是想明确表示我不是试图在交互式会话下运行它,也不是试图冒充任何帐户。我所要做的就是从系统帐户启动一个进程到同一个会话。我相信NTAUTHORITY \ SYSTEM所在的会话是0。
我创建了一个简单的Windows服务,它基本上只使用Process.start来启动可执行文件。该服务是一项系统服务。
我使用SC安装了服务:
sc create "MYSERVICE" binpath= "C:\Projects\MyService\MyService.exe" displayname= "My Awesome Service"
当我尝试手动启动服务时,我收到一条提示,提示“本地计算机上的ServiceName服务已启动然后停止。如果某些服务未被其他服务或程序使用,则会自动停止。”
与此同时,可执行文件实际上从未启动过。在processhacker中监视它时,我可以看到该服务确实启动了,但它尝试的可执行文件却没有。任何人都可以帮我找出原因吗?
正如我之前所说的,我的服务非常基础,它只是在启动时尝试启动可执行文件:
protected override void OnStart(string[] args)
{
Process.Start("svrexec.exe");
}
protected override void OnStop()
{
}
答案 0 :(得分:0)
您是否指定了可执行文件的完整路径?系统用户的工作文件夹是%windir%\ System32。
尝试Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“svrexec.exe”),或设置Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory
答案 1 :(得分:0)
你是100%确定它没有运行吗? 我试过,我的是在SYSTEM用户名下运行 检查在任务管理器中显示所有用户的进程