none
C#如何判断一个进程是由服务创建的、计划任务创建的、用户创建的? RRS feed

  • 问题

  • C# 中如何判断一个进程(比如svchost -k rpcss)是由服务创建的(Remote Procedure Call (RPC))?

    比如说我有三个进程A、B、C,A是由服务A_1(结束后会自动重启)创建的;B是由计划任务(结束后自动重启)启动的,C(结束后不会自动重启)是由用户自己运行的。

    对于C进程,比较好结束,直接杀死这个进程就可以,但是对于A,B两种进程,结束后会自动重新创建出此类进程,所以直接杀死是没有用的。(由于有些是系统服务,不能直接删除启动程序比如由Remote Procedure Call (RPC)这条服务启动的进程为svchost,如果删除这个文件,那么很多的系统服务都无法启动。

    如何准确的判断出B的计划任务的名称,用于停止此条计划任务;判断出A_1服务的名称,用于更改启动方式为手动或者禁用?

    2015年12月14日 7:23

答案

  • 可以根据进程的Owner, parent process id, session id 来判断。  当然,如果你的进程启动方式由参数来区别的话,通过command line也可以直接给出判断

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 7:29
    版主

全部回复

  • 可以根据进程的Owner, parent process id, session id 来判断。  当然,如果你的进程启动方式由参数来区别的话,通过command line也可以直接给出判断

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 7:29
    版主
  • 请问如何获取其他进程的command line比如我想获得svchost.exe的command line?
    2015年12月15日 2:01
  • 通过WMI可以拿到,https://blogs.msdn.microsoft.com/oldnewthing/20091125-00/?p=15923/


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月15日 2:11
    版主
  • 服务的列表我用tasklist获取到了。可是计划任务启动的程序如何获取?暂时没发现计划任务启动的方式如何区分,计划任务启动的用户名也可以是系统,可以是当前用户,并且命令行也区分不出来,请问如何区分这个计划任务启动的进程?
    2015年12月15日 5:53
  • 通过WMI service拿到目标进程的父进程ID以及父进程信息,对于计划任务启动的进程,应该是特殊的父进程/

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月15日 6:50
    版主