감사,이 IMO 아주 철저한 대답이다. 짧은 독서에 대한 권장 사항 : 옵션 2)을 선택하십시오.
먼저, 일반적으로 가능한 한 자주 RunAs를 피하십시오. RunAs를 사용하면 모든 시나리오와 응용 프로그램/프로세스에서 지원되지 않는 혼합 된 사용자 상황이 생성됩니다. XP보다 새로운 운영 체제에서는 실제로 필요하지 않습니다. UAC에서 관리자 권한이 필요합니다 (예 : .exe의 올바른 매니페스트)는 적어도 MS 추천입니다! : 내를 권장) 방법을
는 UAC는 일반적으로 약간의 시간 (하지 설치 과정의 모든 부분 후 자체 올 것이다 그것은 시간이 좀 걸릴 것입니다, 그래서 관리자 권한이 필요합니다.
는 UAC 요청이 올 것을 보장하기 위해 . 자식 프로세스에서, 좀 UAC 상속, 당신은베이스 라인에서에서 ShellExecute를 사용해야 이것은 윈도우 일, MSI 또는 C#과 아무 상관이 C#에서
이 같은이 작업을 수행 할 수 있습니다.
ProcessStartInfo startInfo = new ProcessStartInfo(exeFile, arguments);
StartInfo.UseShellExecute = true;
원하는 경우별로 유용하지 않습니다. 설치 대화 상자가없는 자동 설치 (예. "/ qn").
더욱이 UAC는 이렇게 늦게 작은 단점이있다, 그래서 다음과 같은 권장하고 매우 안전 : 시작, 예를 들어,에서
2) 관리자 권한 부트 스트 래퍼에서 .exe : 확실한 경우 설치가 시작되어야하거나 일반적으로 앱에 자체 또는 하위 프로세스에 대한 관리자 권한이 있어야합니다. 앱 자체에 이미 관리자 권한이 있다는 것이 가장 좋습니다. 처음부터.
즉, 앱을 시작할 때 UAC가 나타납니다. 그런 다음 하위 프로세스는 관리자 권한도 가지며 ShellExecute 유형뿐만 아니라 CreateProcess 유형 하위 프로세스에도 적용됩니다.
이렇게하려면 다음 행을 포함하는 앱에 매니페스트를 추가하기 만하면됩니다.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
어떻게 할 수 있습니까?
전체 Windows 7 전도는 매니페스트 ("삶의 감각은 무엇입니까? 응용 프로그램을 명시하는 것")을 기반으로한다는 사실을 감안할 때 비주얼 스튜디오는 지난 몇 년 동안 다른 버전이 실제로 훌륭하게 수행되지는 않았습니다 이것을 지원하는 일. 모든 버전이 다르며 C#, C++, VB 앱과 다릅니다. 갈
VS 2010 및 C#의 경우 방법은 다음과 같습니다 (. VB.Net를 들어,이 솔루션의 응용 프로그램 탭에서 '보기 Windows 설정'에있어, 내가 여기 읽은) 솔루션 탐색기에서
, 프로젝트를 마우스 오른쪽 단추로 클릭하고 "새 항목 추가", "새 요소"및 "응용 프로그램 매니페스트 파일"을 선택하십시오.
대문자로 클릭하면이 노드를 열고 대체 노드를 설명하는 주석 행과 함께 기존 노드를 찾을 수 있습니다. 당신이 그들에 대해 모른다면, 그것은 현대 윈도우에 관한 가장 중요한 것들 중 하나를 배우는 인터넷 검색의 좋은 포인트입니다.
level = "requireAdministrator"이 구성되고 완료되었습니다. 이제 앱에 높은 권한이 필요합니다. 빌드 후에 사용해보십시오.
(앱 원격 제어 또는 UI 테스트 응용 프로그램에서 같은 다른 애플리케이션의 UI를 자동화/제어해야 할 때까지 "있는 UIAccess"속성, 당신은, 무시할 수 있습니다.)
시작 MSI는 MSIEXEC "정상적으로 설치 .exe ... ". 올바른 장소에서 따옴표를 잊지 말고 오류 및 재부팅에 대한 반환 코드를 잡으십시오.
msiexec 대신 MSI API (외부 사용자 인터페이스)를 사용하는 것이 더 복잡합니다.
3) 관리자 권한이 전혀 없습니다. 유감스럽게도 프로그램 디렉토리에 설치가 가능한 표준 응용 프로그램에 대한 보안 정책은 불가능하거나 손상 될 수 있습니다. 물론 이것에 대해 더 자세히 말하면됩니다.
누군가가 투표 한 이유에 관심이 있으십니까? 이것은 철저한 설명입니다. – Philm