2012-04-17 3 views
2

내가 작성한 샘플 서비스를 설치하기 위해 작성한 배치 파일 (개념 증명)이 있습니다. 여기에는 다음 명령 줄이 포함되어 있습니다.SC.EXE - C#에서 호출 - 액세스가 거부되었습니다.

오른쪽 버튼을 클릭하고 '관리자 권한으로 실행'을 선택하면 모든 것이 예상대로 실행됩니다. 이렇게하지 않고 배치 파일을 실행하면 'Access Denied'가됩니다. 이것은 명령이 작동한다는 증거입니다. 내가 프로그래밍 방식으로이 작업을 수행 할 수 있어야합니다

const string sc = @"sc"; 
const string arguments = @"create serviceTest binpath= {0} DisplayName= ""Service Test"""; 
FileInfo fi = new FileInfo(this.txtServiceLocation.Text); 
if (fi.Exists) 
{ 
    ProcessStartInfo psi = new ProcessStartInfo() 
    { 
     FileName = sc, 
     Arguments = string.Format(arguments, fi.FullName), 
     UserName = "admin", 
     Password = "secret".ToSecureString(), 
     Domain = "MYDOMAIN", 
     WorkingDirectory = fi.DirectoryName, 
     CreateNoWindow = true, 
     UseShellExecute = false 
    }; 
    Process.Start(psi);    
} 
else 
    MessageBox.Show("The service exe could not be found."); 

:

는 또한 Process.Start를()를 통해 SC 명령을 실행 노력했다. 이 기능을 사용하려면 무엇을해야합니까?

요약 : 사용자에게 메시지를 표시하지 않고도이 작업을 수행 할 수 있어야합니다. 이 코드는 사용자 지정 tfs 빌드 프로세스에서 실행됩니다.

+1

질문에 언급했듯이 관리자 사용자 (_Run as Administrator_)에서 호출 할 때 작동하므로 이미 작동하게하는 방법을 이미 알고 있습니다. 제한된 사용자는 Windows 서비스를 설치할 수 없기 때문에 기본적으로 운이 없습니다. –

+1

[C# 응용 프로그램을 Windows 7에서 관리자 권한으로 실행하는 방법] (http://stackoverflow.com/questions/2818179/how-to-force-c-sharp-app-to-run-as-administrator) -on-windows-7) –

답변

0

이 기능이 작동하지는 않지만 코드를 통해 가장을 사용할 수 있으며 tfs 빌드 계정에 적절한 액세스 권한이 있는지 확인하십시오. 이것이 내가해야만하는 일이다.

1

기본적으로 Windows 7의 경우 최소 권한 액세스 (비 관리자) 제어로 대부분의 응용 프로그램을 실행합니다. 응용 프로그램이 시스템을 수정하려고 할 때 성공적으로 실행하려면 관리자 특권으로 승격되어야합니다. 영구적 관리자 권한으로 실행하려면이 응용 프로그램을 확인하려면

http://www.groovypost.com/howto/microsoft/automatically-run-any-application-as-admin-in-windows-7/

0

당신은을 실행하는 UAC를 강제하기 위해 어셈블리에 UAC 매니페스트 파일을 추가 할 필요가 링크에서와 지침을 따르십시오 관리자로서의 프로세스. 다른 솔루션에 대한 참조는 UAC need for console application을 참조하십시오.

+0

불행히도이 작업은 tfs에서 사용자 정의 프로세스의 일부로 실행되므로 아무도 확인을 클릭하여 관리자 권한으로 실행할 수 없습니다. 사용자 개입없이 완전히 작동하려면이 기능이 필요합니다. –