문제

아이디어는 다음과 같습니다. 서비스를 만들고 싶습니다. 특정 조건이 충족되지 않는 한 특정 프로그램을 시작하고 해소 할 것입니다.

일주일 동안 스스로 플레이를 막고 싶은 게임이 있다고 가정 해 봅시다. 따라서 금요일/토요일/일요일 이외의 날에 시작하면 가로 채고 취소됩니다. C#에서 가능합니까?

내가 찾고있는 가장 중요한 것은 프로그램을 시작하는 방법입니다. 휴식은 쉬워야합니다.

도움이 되었습니까?

해결책

글쎄, 당신은 원하는 프로세스 이름 (getProcessesByName ())을 찾아서 어떤 프로그램을 실행하고 있는지 확실히 결정할 수 있습니다.

Process[] processes = Process.GetProcessesByName(processName);
foreach(Process process in processes)
{
   process.Kill();
}

당신은 당신이 실행하고 싶지 않은 목록을 가질 수 있고, 시간 점검을 수행하고 (또는 어떤 기준이 충족 될지) 목록을 걸을 수 있습니다. 나는 시험을 위해 이런 일을 한 번했고 충분히 잘 작동합니다.

다른 팁

특히 C#에 대해 잘 모르겠지만 여기에서이를 달성 할 수있는 이유 중 하나 (위험한 방법이 될 것입니다) 이미지 파일 실행 옵션을 사용하는 것입니다 (http://blogs.msdn.com/junfeng/archive/2004/04/28/121871.aspx) 레지스트리에서. 어떤 실행 가능에 대해서는 디버거 옵션을 설정 한 다음 디버거에서 사용될 작은 응용 프로그램을 작성한 다음 본질적으로 이러한 호출을 필터링 할 수 있습니다. 실행을 허용하고 싶다면 프로세스를 시작하십시오. 그렇지 않으면 원하는대로 수행하십시오. 나는 이것을 시도한 적이 없지만 그것은 당신이 원하는 것을 할 수있는 것처럼 보입니다.

또는 프로세스를 시작한 다음 닫으려면 프로세스 워치를 사용할 수 있습니다 (http://weblogs.asp.net/whaggard/archive/2006/02/11/438006.aspx)) 생성 된 이벤트를 구독 한 다음 필요한 경우 닫으십시오. 그러나 그것은 대신 첫 번째 접근 방식과 같은 적극적인 접근 방식입니다.

나는 당신이 그것을 시작할 수 있는지 확실하지 않지만, 당신은 Windows 목록에서 프로그램을 찾으려고 노력할 수 있습니다 (Enum_windows는 기억할 수 없습니다).

아마도 Autoit에서 이것을 할 수도 있습니다!

Petzold를 끌고 창문으로 재미있게 보내십시오 ...

편집하다: 활성 프로세스를 나열하는 방법에 대한 Sysinternals를 확인하십시오 - 루프에서이를 수행하면 시작할 때 프로그램을 포착 할 수 있습니다. 나는 공식 사이트에 여전히 출처가 있다고 생각하지 않지만 어딘가에 있어야합니다 ...

HRM은 스타트 업을 가로 채지 않고 서비스가 어떻게 든 실행 파일을 방해 할 수 있습니다 (즉, 권한과 함께 멍청이, exe의 이름을 바꾸고, exe를 약한 의지를 위해 꾸짖는 것 등)로 교체하십시오).

충분하지 않다면 다음과 같은 접근 방식 중 하나를 시도 할 수 있습니다.

http://www.codeproject.com/kb/system/win32processusingwmi.aspx

http://msdn.microsoft.com/en-us/magazine/cc188966.aspx

항상 고리가 있습니다. .NET 라이브러리에는 지원이 없지만 언제든지 Win32 DLL을 랩핑 할 수 있습니다. 좋은 기사는 다음과 같습니다. http://msdn.microsoft.com/sv-se/magazine/cc188966(en-us).aspx

이것은 낮은 수준의 프로그래밍이며 코드를 휴대하기를 원한다면 후크를 사용하지 않습니다.

이 앱은 바로 그렇게 할 것입니다 오렌지 램프에서 프로세스를 처치하십시오
나는 저자가 아닙니다.

시작 프로그램을 가로 채울 필요는 없습니다. 프로그램을 시작하는 "프로그램 스타트 업 관리자"앱을 작성할 수 있습니다 (흰색 상장 인 경우). 앱을 작성한 후에는 적절한 매개 변수가있는 시작 관리자를 가리 키도록 응용 프로그램 바로 가기를 수정하기 만하면됩니다.

응용 프로그램을 비활성화하기 만하면 레지스트리를 편집하여 디버거가 존재하지 않으면 Windows가 불만을 제기하고 구제합니다.

hkey_local_machine Software Microsoft Windows NT CurrentVersion 이미지 파일 실행 옵션]은 키입니다. MS 기사를 찾으십시오. http://support.microsoft.com/default.aspx?kbid=238788 더 많은 정보를 위해서.

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