2017-04-14 12 views
-1

일반 프로세스가 관리자 프로세스로 실행되고 있습니다. 그러나 그것은 내가 필요한 모든 특권을 가지고 있지 않습니다. 이 프로세스를 로컬 시스템 계정으로 실행하려면 어떻게합니까?로컬 시스템으로 프로세스 실행

이 표고를 달성하기 위해 외부 도구를 사용하고 싶지 않습니다. Win32 함수를 호출하여 구현할 수 있다면 이상적입니다. 또한 문제의 프로세스에 권한을 전달하기 위해 Windows 서비스를 작성하고 실행하려고합니다.

누군가 나에게 단서를주세요. 내 검색을 통해 서클에서 나를 보내고 있습니다.

+1

"일반 프로그램"은 로컬 시스템으로 실행하면 안됩니다. 로컬 시스템 권한이 필요한 작업은 무엇입니까? – KonstantinL

+0

모든 파일을 삭제하고 싶습니다. 그것은 내 시스템이므로 원하는대로 할 수 있습니다. 물론 그것은 농담을 의미합니다. 그러나 당신은 아이디어를 얻습니다. 저는 전문 개발자로서 기본적인 소프트웨어 원칙을 찾지 않습니다. 기술적 인 문제에 대한 기술적 인 해결책을 찾고 있습니다. – user118708

+1

Windows 서비스를 작성하고 로컬 시스템으로 실행하십시오. – KonstantinL

답변

0
  1. 프로그램은 세션 ID가 서비스를 전송
  2. 서비스는 토큰 로컬 시스템을 만들 OpenProcessToken 및하여 DuplicateTokenEx를 호출
  3. 서비스 SetTokenInformation 일치하는 토큰 세션 ID를 변경하기 위해 호출하는 프로그램의
  4. 서비스를 만들으로 DuplicateHandle을 호출 토큰에 대한 핸들
  5. 서비스가 프로그램에 핸들을 보냅니다.
  6. 수신 된 핸들을 사용하여 SetThreadToken을 호출합니다.

프로그램에는 로컬 시스템 권한이있는 스레드가 하나 이상 있습니다. 이것은 내 목적에 적합 할 것이다.

+0

로컬 시스템 권한이 필요한 모든 것을 서비스 내에서 수행 할 수없는 이유는 추측 할 수 있습니다. – KonstantinL

+0

Local System은 일반 프로그램이 할 수있는 권한이 없기 때문에 서비스에서 일을 할 수 없습니다. 아마도 초보자 MS VB 프로그래머가 만든 교착 상태일까요? 아마 당신은 그 (것)들에게 몇몇 기본적인 소프트웨어 원리를 보여줄 수있다. – user118708