[C#] 시스템을 종료하는 두 가지 방법

Posted at 2012.02.04 09:57 | Posted in 프로그래밍

1. DLLImport로 advapi32.dll의 InitiateSystemShutdown함수 사용

using System.Runtime.InteropServices;

먼저 이 코드를 소스 맨 위에 삽입해 주세요

[DLLImport("advapi32.dll")]
public static extern void InitiateSystemShutdown(string lpMachineName, string lpMessage, int dwTimeout, bool bForceAppsClosed, bool bRebootAfterShutdown);

다음, 이 두 줄을 소스 어디엔가 삽입해 놓습니다. Class 안에 삽입하면 Class 안에서 원하는대로 InitiateSystemShutdown 함수를 사용 할 수 있겠죠.

private void ButtonShutdownComputerClick(object sender, EventArgs e)
{
	InitiateSystemShutdown("\\\\127.0.0.1",	// 컴퓨터 이름
		null,			// 종료 전 사용자에게 알릴 메시지
		0,				// 종료까지 대기 시간
		false,			// 프로그램 강제 종료 여부(false > 강제 종료)
		false);			// 시스템 종료 후 다시 시작 여부(true > 다시 시작)
}

단추를 누르면, 방금 전에 삽입했던 advapi32.dll의 InitiateSystemShutdown 함수를 실행시킵니다. InitiateSystemShutdown를 호출하기 위해서는 괄호 안 첫 번째 칸에 컴퓨터 이름을 넣으셔야 됩니다. 컴퓨터 이름은 탐색기의 네트워크 창에서 컴퓨터를 더블 클릭하면 알 수 있습니다(원래는 \\BLOODCAT 이나 \는 특수문자이기 때문에 \\로 표시해야됩니다. 따라서 \\\\BLOODCAT이 됩니다. 127.0.0.1은 현재 접속해있는 컴퓨터의 IP주소입니다). 두 번째 칸에는 사용자에게 알릴 메시지를 적으면 됩니다. 전 사용자에게 알릴 메세지가 따로 없기 때문에 null값을 줬습니다. 세 번째 칸엔 종료까지 대기 시간을 설정하실 수 있습니다. 마지막 칸의 값을 true로 하면 시스템이 종료되고 다시 시작되겠죠.

2. System.Diagnostics.Process.Start로 Shutdown 프로세스를 실행

private void ButtonShutdowncomputerClick(object sender, EventArgs e)
{
	System.Diagnostics.Process.Start("shutdown", "/s /f /t 60");
}

Shutdown 프로세스와 관련된 사항은 명령 프롬프트에 shutdown /?를 입력하여 확인하세요. Shutdown 프로세스도 컴퓨터 지정하여 종료할 수 있습니다. 다만, system32에 shutdown.exe가 없으면 이 방법은 작동하지 않습니다.

Name __

Password __

Link (Your Website)

Comment