我有一个 Windows NT 服务和一个第三方 exe,我想作为 NT 服务的子进程运行,这样一旦我的 NT 服务进程崩溃,这个子进程也会被杀死
为此,我找到了 在父进程被杀死时使用杀死子进程的方法
我尝试使用普通的父进程来实现它并正常工作,但是当我在 NT 服务中执行与父 SetInformationJobObject 方法相同的操作时,返回 false 和错误代码为 0 的异常
异常:_COMPlusExceptionCode = -532462766
导致此异常的正常进程和 NT 服务进程有什么区别?
我正在使用 Win2k8 R2 服务器机器和 C#
[EDIT1] Exception: GenericParameterAttributes = '(((System.Reflection.RuntimeConstructorInfo)(ex._exceptionMethod)).ReflectedType).GenericParameterAttributes' 抛出了类型为 'System.InvalidOperationException' 的异常 {"方法只能在类型上调用哪个 Type.IsGenericParameter 为真。"}
编辑 2:因为在使用 DLLImport 的函数定义中未将 SetLastError 设置为 true,所以最后一个错误是错误的 Correct ErrorCode 是 24,表示结构的错误长度,那么正确的结构应该是什么?
编辑 3:对于我的 64 位 win2k8R2 服务器机器,NT Servce 的预期正确长度似乎为 144,而上述帖子中定义的为 112
编辑 4:这是这样做的唯一方法,还有哪些其他选择?