현재 실행중인 응용 프로그램이 작동하지 않는 다른 도메인에있는 다른 응용 프로그램에 어떻게 알릴 수 있습니까? 다시 말해, 별도의 도메인에서 두 개의 다른 응용 프로그램을 협상 할 수 있습니까?별도의 도메인에있는 두 응용 프로그램 협상
미리 감사드립니다.
현재 실행중인 응용 프로그램이 작동하지 않는 다른 도메인에있는 다른 응용 프로그램에 어떻게 알릴 수 있습니까? 다시 말해, 별도의 도메인에서 두 개의 다른 응용 프로그램을 협상 할 수 있습니까?별도의 도메인에있는 두 응용 프로그램 협상
미리 감사드립니다.
이러한 종류의 IPC에는 명명 된 파이프를 사용할 수 있습니다. 이를 위해 System.IO.Pipe s 네임 스페이스와 우수한 NamedsPipeServerStream
& NamedPipeClientStream
클래스를 살펴보십시오.
동일한 도메인 내의 프로세스 간 통신에만 익명 파이프를 사용할 수 있지만 IPC는 동일한 도메인의 IPC (즉 동일한 인트라넷에있는 PC)에서 IPC 용 명명 된 파이프를 사용할 수 있습니다.
AppDomain.UnhandledException
이벤트를 사용하여 이름이 지정된 뮤텍스를 통해 다른 AppDomain을 알릴 수 있습니다. 시스템 전반에 걸쳐 있으므로 "MyAppHasCrashed"라는 파일을 만들어 즉시 잠글 수 있습니다. 처리되지 않은 예외가 발생하면 뮤텍스를 해제합니다. 다른쪽에는 뮤텍스를 기다리는 스레드가 있어야합니다. 처음에 차단되었으므로 스레드가 대기합니다. 예외가 발생하면 스레드가 다시 시작되고 사용자는 충돌을 처리 할 수 있습니다.
Mutex crashed = new Mutex(true, "AppDomain1_Crashed");
...
private void AppDomain_UnhandledException(...)
{
// do whatever you want to log/alert the user
// then unlock the mutex
crashed.ReleaseMutex();
}
그런 다음, 다른 쪽 :
void CrashWaitThread()
{
try {
crashed = Mutex.OpenExisting("AppDomain1_Crashed");
}
catch (WaitHandleCannotBeOpenedException)
{
// couldn't open the mutex
}
crashed.WaitOne();
// code to handle the crash here.
}
이 해킹의 비트,하지만 그것은 도메인 간 및 프로세스 간 두 경우 모두에 대해 잘 작동합니다.
예 가능합니다. 이것이 .NET 유형에서 얼마나 잘 지원되는지는 "충돌"여부를 결정하는 방법에 따라 다릅니다.
기본적으로 모니터링 응용 프로그램은 모니터링되는 응용 프로그램을 실행해야하는 시스템에 액세스하는 데 적합한 자격 증명을 제공해야합니다.
net use \\Fileserver1.domain2.com\IPC$ /user:DOMAIN\USER PASSWORD
또는 API의 equaivalent :이 하나가 something like으로 시작하여 다른 도메인에/파일을 복사 할 것이라고 정확히 것입니다.
는 WMI를 사용하는 경우 (이것은 명백한 방법, Win32_Process
에 대한 쿼리와 원격 시스템에서 프로세스를 나열하기 쉽다)는합니다 (scripting interface 또는 in .NET와 예.) 자격 증명을 제공 할 수 있습니다.
"도메인 간"은 다른 컴퓨터를 의미합니다. mutex는 한 대의 컴퓨터에만 적용됩니다. – Richard
@Richard - 죄송합니다. 한 대의 컴퓨터에서 AppDomain을 처리하고 있다고 생각했습니다. – Polynomial
내가 읽지 못하고 잘못된 질문에 답하는 질문의 수는 당황 스럽지만 너무 많습니다 ... 우리 모두 해냈습니다. – Richard