作成したサンプルサービスをインストールするために作成したバッチファイル(概念実証)があります。次のコマンドラインが含まれています。
sc create serviceTest binPath= C:\Sandbox\ServiceTest\ServiceTest.exe DisplayName= "Service Test"
右クリックして[管理者として実行]を選択すると、すべてが期待どおりに実行されます。これを行わずにバッチファイルを実行すると、「アクセスが拒否されました」が表示されます。これは、コマンドが機能することの証明です。
また、Process.Start()を介してscコマンドを実行してみました。
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.");
私はこれをプログラムで行うことができる必要があります。これを機能させるには何をする必要がありますか?
明確化:ユーザーにプロンプトを表示せずにこれを実行できる必要があります。このコードは、カスタムtfsビルドプロセスで実行されます。