私が作成したサンプルサービスをインストールするためのバッチファイルがあります。これには、次のコマンドラインが含まれています。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コマンドを実行しようとしています。これを機能させるには何が必要ですか?CLARIFICATION:ユーザーに確認を求めずにこれを行う必要があります。このコードはカスタムtfsビルドプロセスで実行されます。
ご質問のとおり、管理者ユーザー(_RunはAdministrator_)から呼び出されたときに機能しますので、既にそれを動作させる方法を知っています。限られたユーザーしかWindowsサービスをインストールできないため、基本的には不運です。 –
[Windows 7でC#アプリケーションを管理者として実行する方法]の複製可能性(http://stackoverflow.com/questions/2818179/how-to-force-c-sharp-app-to-run-as-administrator) -on-windows-7) –