0
私は常時サービスとして動作させたいだけの単純なコンソーアプリで、VBテンプレートはありません。右exeファイルの互換性をクリックして c#console app as service
- がマニフェストでhighestAvailable許可を与え、およびプロパティ
- にマニフェストバインド:
は、これまでのところ私が持っています「誰も」、管理者、サービス、システム、ネットワークサービス、ローカルサービス、および一部のユーザーはすべて完全なアクセス権を持っています。
が正常にこのコードをサービスリストに追加され、コードはまた、マニフェストとし、管理者として実行して、別々の溶液の形態で実行される:アプリケーションが、サービスリストにそれを行った
private static void cmd_PROMPT(string cmd)
{
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardInput = true;
cmdStartInfo.Verb = "runas";
cmdStartInfo.UseShellExecute = false;
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.Arguments = "/user:Administrator ";
Process cmdProcess = new Process();
cmdProcess.StartInfo = cmdStartInfo;
cmdProcess.ErrorDataReceived += cmd_Error;
cmdProcess.OutputDataReceived += cmd_DataReceived;
cmdProcess.EnableRaisingEvents = true;
cmdProcess.Start();
cmdProcess.BeginOutputReadLine();
cmdProcess.BeginErrorReadLine();
cmdProcess.StandardInput.WriteLine(cmd);
MessageBox.Show(">>" + cmd);
//cmdProcess.WaitForExit();
}
private void button3_Click(object sender, EventArgs e)
{
string s;
string prgmName = "@[email protected]";
string prgmPath = "c:\\@[email protected]\\aquaService.exe";
string prgmMode = "auto";
s = "sc create " + prgmName + " binpath= " + prgmPath + " DisplayName= \"" + prgmName + "\" start= " + prgmMode;
cmd_PROMPT(s);
}
コントロールパネルですが、「停止」しています...クリック...アクション...サービスを開始すると、試行されますが、error:1053 did not start in timely fashion
で失敗します。 私はCMD命令を使用する場合、それはサービスリストで「開始」に変更されますが、その後、停止する権利戻っ:あなたの手掛かりと
prgmName = "@[email protected]";
prgmPath = "c:\\@[email protected]\\aquaService.exe";
prgmMode = "auto";
s = "sc start " + prgmName;
cmd_PROMPT(s);
サービスは特定のルールに従わなければなりません。サービスコントローラーと対話する必要があります。それはサービスとして書かれなければならない。通常のexeを実行している場合は、タスクスケジューラを使用します。 Windowsリソースキットには、exeを実行するサービスであるSvcanyというプログラムがあります。ウィンドウとの通信を処理して、サービスコントローラーが満足できるようにします。 –