C# 콘솔 앱인 제품이 있습니다. 명령 줄에서만 실행되도록 제한 할 수 있습니까? 즉, 사용자는 스크립트 나 다른 앱에서 호출 할 수 없습니다.C# : 콘솔 앱 호출 방법 제한
그렇다면 일부 예제 코드가 크게 감사 할 것입니다. 감사.
C# 콘솔 앱인 제품이 있습니다. 명령 줄에서만 실행되도록 제한 할 수 있습니까? 즉, 사용자는 스크립트 나 다른 앱에서 호출 할 수 없습니다.C# : 콘솔 앱 호출 방법 제한
그렇다면 일부 예제 코드가 크게 감사 할 것입니다. 감사.
여기 제공된 코드를 사용하여 애플리케이션을 만든 프로세스를 확인할 수 있습니다 : http://msdn.microsoft.com/en-us/netframework/aa569609.aspx#Question3. DOS 명령 행에서 시작하려면 상위 프로세스는 cmd.exe 여야합니다. 그러나 콜린 (Colin)에 의해 지적 되었 듯이 배치 스크립트를 사용하면 쉽게 우회 할 수 있습니다. cmd.exe에 대한 명령 프롬프트 인수가 null인지 확인하여 해당 기능을 비활성화 할 수도 있습니다. 이를 위해서는 WMI를 사용해야합니다.
http://skysanders.net/subtext/archive/2010/04/11/using-wmi-to-fetch-the-command-line-that-started-all.aspx
또한 cmd.exe 이미지가 system32 폴더에 있는지 확인해야합니다.
배치 스크립트에서 응용 프로그램을 시작한 경우 상위 프로세스는 무엇입니까? –
@Colin : 스크립트 호스트입니다. 그렇지 않니? 예 : WSH – abatishchev
아니요, 방금 시도했습니다. cmd.exe –
차이점을 말할 수 있다고 생각하지 않습니다.
물론 상위 프로세스는 유용한 지표가 아닙니다. 이것은 당신이 부모 프로세스에서 무엇을 얻을 수 있습니다 :
당신이 1. 프로그램을 시작하는 유효한 방법이 될 수 있도록, 나는 당신이 앱이 될 수 있다는 뜻 2. 중지 할 수 있습니다 생각하지 않는다하려는 경우1. type app name into Command Prompt: cmd.exe
2. call app from batch script: cmd.exe
3. Double click on app or shortcut: explorer.exe
4. type app name into Run dialog box: explorer.exe
모든 스크립트 또는 프로그램에서 호출
가 (BTW, 사람에 유래에 테이블을 얻을 수있는 방법을 알고 있나요?) (이 간단하기 때문에 다른 프로그램은 1 개 라인 배치 스크립트를 작성하고 실행하기위한)
어쨌든 조부모를 찾는거야? 그런 다음 cmd.exe가 스크립트 나 알 수없는 프로세스가 아닌 예상 한 것으로 생성되었는지 확인할 수 있습니다. – FunLovinCoder
프로세스를 시작하는 데는 여러 가지 방법이 있습니다. 작업 관리자 -> 파일 -> 실행이 마음에 와서, 더 많은 것이 있다는 것을 확신합니다. – Tergiver
오 예, 이것들은 예로서 만 의미가 있습니다. 작업 스케줄러는 또 다른 것입니다. –
를 @ swisston 다른 응용 프로그램에서 콘솔 응용 프로그램을 시작하는 경우 "이름이 지정된 커널 개체"를 사용하는 것이 좋습니다. 예를 들어 뮤텍스. 부모 앱에 명명 된 뮤텍스를 만들 수 있습니다. 그런 다음 자녀 콘솔 앱의 메인 스레드에서이 뮤텍스를 열어보십시오. 뮤텍스가 열려 있지 않으면 (찾을 수 없음) : 콘솔 응용 프로그램이 사용 권한을 계속하지하고 닫아야가) 대기, 난 당신을 위해 몇 가지 코드를 만들거야)
편집 : 그래서 그것은 매우 쉽게 전술.
Mutex mutex = new Mutex(true, "MyPermissions");
그런 다음 아이 콘솔 응용 프로그램 체크에 뮤텍스가 존재하는 경우 : 부모 앱에서 명명 된 뮤텍스를 만들
콘솔 응용 프로그램이 false를 돌려줍니다 부모 애플리케이션 CheckPermissions 방법없이 실행 된static bool CheckPermissions()
{
try
{
Mutex mutex = Mutex.OpenExisting("MyPermissions");
}
catch (Exception ex)
{
return false;
}
return true;
}
경우와 콘솔을 닫아야한다;)
부모 앱을 어디서나 호출 할 수 있기 때문에 이는 도움이되지 않습니다. 방금 문제를 해결하지 않고 문제를 한 단계 위로 옮겼습니다. – Tergiver
나는 당신이하려는 일에 동의하지 않는다. 그러나 여기서는 작동 할 수있는 아이디어가있다. 프로그램의 시작 부분에 일종의 사용자 입력이 필요하다. 보안 문자 (명령 줄에서하기가 어렵지만 이론적으로 가능합니다. 아스키 아트를 생각해보십시오.)
DOS 명령 줄 (command.com) 또는 NT 명령 줄 (cmd.exe)을 실제로 의미합니까? 아니면 어떤 콘솔 응용 프로그램이 좋습니까? – CodesInChaos
그리고 무엇을 성취하려고합니까? 왜 다른 프로그램이 프로그램을 시작하지 못하게하려고합니까? – CodesInChaos
@CodeInChaos : 좋은 지적입니다. 모든 콘솔 응용 프로그램이 좋습니다. 다른 제품이나 서비스의 일부로 사용되는 앱을 차단하고 싶습니다. – FunLovinCoder