문제

ServerFault의 사람들이 있기 때문에이 질문을 여기에 다시 시작했습니다. 이것이 이것을 물어볼 적절한 장소라고 생각합니다..

사람들이 하나의 단일 컴퓨터에 여러 로그인하는 것을 방지하고 내 응용 프로그램을 사용하려고합니다. 동시에. 다시 말해 동일한 컴퓨터에서 두 번 실행되는 것을 방지하고 싶습니다. 동시에 주어진 시간에 내 응용 프로그램을 실행하는 단일 사용자 만 있어야합니다..

엄격한 라이센스 사용량을 설정 해야하는 이유가 있습니다. 내 앱은 매우 전문적이고 매우 틈새 시장에 서비스를 제공합니다. 따라서 각 복사 비용은 수만에 달합니다. 이러한 여러 원격 로그인 기술이 두드러지면 나는 곧 사업을 중단 할 것입니다.

라이센스 하나를 구매하지 못하고 기계에 설치 한 다음 특정 원격 데스크톱 기술을 사용하여 여러 사용자 로그인을 수행하기를 원하기 때문입니다. 라이센스 계약을 위반하는 것을 방지하고 싶습니다. 기술적으로, 법 집행 대신.

어쨌든이 신청서에서 할 수있는 것이 있습니까? 아니면 다중 로그인이 동시에 불가능합니까?

나는 곤거가 아닌 솔루션을 선호합니다. 내 응용 프로그램은 Windows에서만 실행됩니다.

편집 : 문제를 더욱 복잡하게하기 위해 동시 버전 액세스를 허용합니다 (클라이언트는 한 머신에 동일한 소프트웨어의 여러 버전을 설치하여 동시에 발사 할 수 있습니다). 나는 단지 동시 원격 로그인을 허용하지 않습니다.

도움이 되었습니까?

해결책

내 관점을 조금 명확히하겠습니다. 적어도 부드럽고 나는 이것을 다른 방식으로 해석하는 것 같습니다.

내가 이해 한 바에 따르면, 여러 사용자 (또는 동일한 사용자의 더 많은 인스턴스)가 로그인하는 것을 방지하려고합니다. 기계 동시에. 이것에서 당신은 유일한 목적 기계의 경우 응용 프로그램을 실행하는 것이 일반적으로 해당되지 않습니다.

동일한 기계에서 여러 인스턴스가 실행되는 것을 방지하기 위해 Silky의 접근 방식 (시스템 전체의 뮤트)을 사용하는 것이 허용됩니다. 개인적으로, 나는이 접근법을 수행하기 전에 응용 프로그램의 두 인스턴스를 실행하는 단일 사용자에게 유효한 사용 사례가 없도록하고 싶습니다.

이것도 참조하십시오 프로그래머의 애완 동물 친구. 여러 사용자가 동일한 기계를 사용하지 못하면 동일한 범주로 떨어집니다.)

다중 버전 문제에 관해서는 : 모든 (주요?) 애플리케이션 버전에 대해 시스템 전체의 MUTEX의 고유 한 이름을 선택하십시오.

시스템 전체의 뮤 테스가있는 기본 예 :

static class Program
{
    private static Mutex appMutex = new Mutex(false, "Global\\MyApp 1.0");

    [STAThread]
    static void Main()
    {
        if (!appMutex.WaitOne(0))
        {
            MessageBox.Show("Application is already running. Have a nice day.");
            return;
        }

        // ...
    }
}

그만큼 Global\ 접두사는 여러 터미널 서버 세션에서 MUTEX를 공유합니다. 그것 없이는 사용자가 같은 세션에서 두 인스턴스를 실행하는 것을 방지합니다.

제한된 계정이 그러한 뮤텍스를 전혀 생성 할 수 없을 수 있으므로 제한된 권리가있는 계정 에서이 접근법을 테스트해야합니다.

다른 팁

당신은 그것을 막고 싶습니까? 달리기 같은 컴퓨터에서 두 번?

이 경우 솔루션은 매우 간단 할 수 있습니다. 시스템 전체의 뮤텍스 또는 유사한 접근 방식을 꺼낸 다음 확인하고 아직 존재하지 않는지 확인하십시오. 당신은 그것을 달성하기 위해 소켓 또는 무엇이든 열 수 있습니다.

아니면 계정을 설치 한 것 외에는 어떻게 든 계정을 중지하고 싶습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top