C# Process.Start()是否以任何方式钩住可执行文件?

C# Process.Start()是否以任何方式钩住可执行文件?,c#,C#,System.Diagnostics.Process.Start()是否与它启动的进程挂钩 我想找到一种从C#app运行进程的方法,而不让进程知道它是由C#app启动的。这是Process.Start()的默认行为,还是我需要做任何不同的/额外的事情 换句话说,正在启动的进程是否有任何方式表明它是从C#app运行的,或者它与正在打开的任何其他文件一样 我想找到一种从C应用程序运行进程的方法,而不让进程知道它是由C应用程序启动的 换句话说,正在启动的进程是否有任何方式表明它是从C#app运行的,或

System.Diagnostics.Process.Start()
是否与它启动的进程挂钩

我想找到一种从C#app运行进程的方法,而不让进程知道它是由C#app启动的。这是
Process.Start()
的默认行为,还是我需要做任何不同的/额外的事情

换句话说,正在启动的进程是否有任何方式表明它是从C#app运行的,或者它与正在打开的任何其他文件一样

我想找到一种从C应用程序运行进程的方法,而不让进程知道它是由C应用程序启动的

换句话说,正在启动的进程是否有任何方式表明它是从C#app运行的,或者它与正在打开的任何其他文件一样

C#应用程序作为窗口进程运行,因此,派生的进程可以使用Win32函数
Process32First()
查询有关父进程的信息,特别是父进程的信息。现在完全有可能在子进程获得此信息时,父进程可能已终止,Windows将进程ID重新用于完全不同的进程。无论如何,子进程可以测试“父”进程以了解它是否是.NET

代理 如果您想阻止子进程了解有关您的进程的任何信息(在本例中是不是.NET),那么您可以通过代理生成它

在下图中,A是您的流程Z是您的衍生过程。-->这是一个产卵操作

更改:

A-->Z

…致:

A-->p-->Z

…其中,p是代表您运行的中间代理过程P在创建流程后立即退出。Z极不可能追溯到A

---> **P**...
          |
          |
          V
          **Z**...
      
------> **A**...
生成代理本机代码

我想找到一种从C应用程序运行进程的方法,而不让进程知道它是由C应用程序启动的

<> >为了进一步隐藏即时父不是.NET的事实,请考虑在本地代码中使用代理。

使代理成为进程外COM服务器

与之前的c#或本机代码中的中间代理示例不同,仍然存在将流程沿袭学习回.NET应用程序的可能性

但是,如果您的A进程实例化了托管在OoP COM服务器p中的COM对象,则生成的进程将无法将其追溯到您,因为我非常确定COM激活与生成新进程不同,因此可能不受继承的约束。特别是当COM服务器长时间运行且在A之前运行时

---> **P**...
          |
          |
          V
          **Z**...
      
------> **A**...
告诉我更多

传递一些参数;)这个问题的最上面的答案给出了一个如何执行您建议的示例。理想情况下,我宁愿应用程序不受C#app的影响。也就是说,默认的行为是,它对正在运行的可执行文件没有任何特殊的作用,与从桌面上运行没有什么不同吗?@Mathemats我不相信这就是他要问的问题,你为什么要这样?