내가 작성한 샘플 서비스를 설치하기 위해 작성한 배치 파일 (개념 증명)이 있습니다. 여기에는 다음 명령 줄이 포함되어 있습니다.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 빌드 프로세스에서 실행됩니다.
질문에 언급했듯이 관리자 사용자 (_Run as Administrator_)에서 호출 할 때 작동하므로 이미 작동하게하는 방법을 이미 알고 있습니다. 제한된 사용자는 Windows 서비스를 설치할 수 없기 때문에 기본적으로 운이 없습니다. –
[C# 응용 프로그램을 Windows 7에서 관리자 권한으로 실행하는 방법] (http://stackoverflow.com/questions/2818179/how-to-force-c-sharp-app-to-run-as-administrator) -on-windows-7) –