기본 exe를 닫고 업데이트 된 exe로 바꾸고 업데이트 된 exe를 시작하기위한 updater exe를 가지고 있습니다. 업데이트 프로그램이 업데이트 된 exe를 시작하려고 시도 할 때 사용자가 UAC 권한 대화 상자를 거부하면 업데이터가 중지됩니다. 이는 Process.Start()
함수가 결코 반환하지 않기 때문입니다. 내 CPU주기 미터는 실제적으로 사용량 btw가 없음을 나타냅니다.UAC가 거부되었을 때 Process.Start는 결코 돌아 오지 않습니다.
나는 모든 사용자가 UAC에 "예"라고 말하기를 바랄 것이다. 그러나 나는이 사건을 적어도 몇 가지 오류 메시지로 처리하고 싶다. 내 사용자가 Windows 7 이상을 사용한다고 가정합니다. exe는 32 비트 Winform 응용 프로그램입니다. 대상 .Net Framework는 4.0입니다. Visual Studio 2010 Ultimate 사용.
내 사용자가 UAC 대화 상자를 거부하는 경우를 감지하는 방법에 대한 아이디어가 있습니까?
내가 할 수있는 일은 Process.Start()
을 잠시 후에 시간 초과되는 별도의 스레드에서 실행하는 것입니다. 더 많은 코드의 경우 :
private void RestartProcess()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Users\Me\Documents\Visual Studio 2010\Projects\updated.exe";
MessageBox.Show("Attempting to start process");
Process newProc = Process.Start(startInfo);
MessageBox.Show("If this shows, the user has clicked YES in the UAC.");
}
솔루션 :
Process.Start()
종료 묵묵히 Win32Exception 하나의 오류를 잡으려고 시도 {} 잡기 {} 블록을 사용하지 않는.
기타 코드를 작성하십시오. –
사용자가 UAC 대화 상자에서 "예"를 클릭 할 때 알고 있다고 가정합니다 (위의 내용을 기반으로). 이 사실을 알고 있다면 [DialogResult Property] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.dialogresult (v = vs.110) .aspx)를 사용하여 "아니오"의 경우를 처리합니까? – Brandon
[Manifest] (http://msdn.microsoft.com/en-us/library/bb756929.aspx)로 조작 해 보았습니까? 사용자에게 No라고 말하기조차하지 마십시오. – tyh