2012-03-29 4 views
1

드문 경우이지만 레지스트리 설정을 변경해야하는 응용 프로그램이 있습니다. 또한 처음 실행하는 동안 새 키를 만들어야합니다. 나는 이것을 Windows 7에서 개발하고있다. ThrowUnauthorizedAccessException을 얻는다. Windows에서 내 사용 권한을 일시적으로 높이는 UAC 프롬프트를 표시하도록하려면 어떻게해야합니까?응용 프로그램에서 권한 승격 요청 C# .NET

미리 감사드립니다.

+1

기존 프로세스의 권한을 높일 수 없습니다. 높은 권한으로 새 프로세스를 생성해야합니다. – CodesInChaos

+0

@CodeInChaos Bummer. 나는 이것이 이것이 가능하기를 정말로 바라고 있었다. – kmarks2

+1

문제는 권한 수준이 무결성 수준을 두 배로 높이는 것입니다. 그러나 이미 실행중인 프로세스의 보안 수준을 높이려면 해당 프로세스를 상승시킬 수있는 최고 수준의 무결성 수준이 필요합니다. 그렇지 않으면 신뢰할 수없는 다른 프로세스가 여전히 낮은 무결성/권한 수준으로 실행되는 동안 프로세스를 조작 할 수 있습니다. – CodesInChaos

답변

3

모든 사용자가이 설정을 수정할 수 있습니까? 그렇다면 가장 간단한 해결책은 설치 프로그램을 수정하여 사용자에게Full Control의 레지스트리 키를 제공하는 것입니다.

관리자 만이 설정을 수정할 수 있어야합니다 경우에, 당신이 그것을 상승하도록 Windows를 요청, 프로그램의 다른 복사본을 시작해야합니다 스마트한다면 당신은 몇 가지 명령 줄을 포함 할 것

ProcessStartInfo startInfo = new ProcessStartInfo("C:\Path\To\MyApplication.exe"); 

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled) 

System.Diagnostics.Process.Start(startInfo); 

인수 때문에 사용자가 처리해야하는 소프트웨어 부분으로 바로 넘어 가야한다고 "자신"에게 말할 수 있습니다. ,

ProcessStartInfo startInfo = new ProcessStartInfo(
     "C:\Path\To\MyApplication.exe", 
     "/setLoggingEnabled yes"); 

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled)  

System.Diagnostics.Process.Start(startInfo); 

setLoggingEnabled 스위치 응용 프로그램 수표를 가지고 다음, 변경, 종료합니다 또는 명령 줄 인수는 이 당신이 원하는 것을 다 말할 수 있습니다.

업데이트 : 일반적인 상황은 월드 오브 워크 래프트입니다. 게임이 실행되는 동안 게임 자체를 업데이트 할 수 있으므로 모든 사용자Program Files에있는 게임 데이터를 수정할 수 있어야합니다. 정확하고 유효한 조치는 모든 사용자가 완벽하게 제어 할 수 있도록

C:\Program Files\Blizzard\World of Warcraft 

폴더에 ACL을 수정하는 것입니다. 실제로 블리자드가 함께하기 전에 Microsoft는 다음 번에 관리자로 실행할 때 WoW 폴더에 대한 모든 권한을 모든 사용자에게 부여하는 응용 프로그램 호환성 업데이트를 릴리스했습니다.

또 다른 일반적인 경우는 블리자드 실행기가 관리 privelages으로 시작할 때, 그것은 게임이다 를 기록, HKLM의 레지스트리 키를 업데이트합니다. 이것은 예를 들어, 와우를 하드 드라이브에서 SSD 드라이브로 옮길 때 발생합니다.

updaters가 올바르게 작동하도록 관리자로 런처를 한 번 실행합니다.

+0

감사합니다. 이것은 내가 본 어떤 대답에도 가깝습니다. – kmarks2

관련 문제