今日は、コードの使用を実装するためのプロセスを開始するか、Windowsサービスを閉じます
Windowsの起動とシャットダウンサービスを処理し、実際に我々は2つのことに焦点を当てる必要があります。
最初は、サービスのスタートアップの種類を設定することである - 手動、自動、自動(遅延開始)、無効を、そして第二には、サービスの状態を制御することである - スタート、ストップ、一時停止、再開。
サービスが無効になっている場合は、すべての後、あなたはそれを起動することはできません。
OK、我々は、スタートアップの種類の処理を開始します。
スタートアップの種類は、実際にサービスレジストリに対応する鍵であります
彼は、保存されました计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务名\Start
彼は無効、手動、自動、値1-4、それぞれ自動的に(遅延開始)を持っています。場合は、ドロップダウンリスト、我々は同じ種類を参照してください上の写真
それは、レジストリであるので、我々は読み書きするために、レジストリによって制御することができます
protected string ReadRegistryValue(string service)
{
RegistryUtility.GetRegVal(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default),
@"SYSTEM\CurrentControlSet\services\" + service, "Start", out var value);
return value;
}
public static class RegistryUtility
{
public static bool GetRegVal(RegistryKey rootkey, string keypath, string keyname, out string rtn)
{
rtn = "";
try
{
RegistryKey key = rootkey.OpenSubKey(keypath);
rtn = key.GetValue(keyname).ToString();
key.Close();
return true;
}
catch
{
return false;
}
}
}
注:あなたがに対処するために上記のコードを使用している場合はTrustedInstaller
、サービス、あなたは(あなたが管理者権限を使用している場合でも)あなたは、レジストリを変更しようとした場合、いない権利の問題が表示されますことがわかります。
直接バットスクリプトを使用して、この時点の提案で、"sc config {serviceName} start= {startValue}
OK、今では第二の問題、状態制御サービスです
C#は、System.ServiceProcess.dll
私たちのためにServiceController
簡単にサービスの状態によって制御することができるオブジェクトも
参考リンク:
:この記事は頻繁に更新されますが、個人的なブログのオリジナルお読みくださいhttps://xinyuehtx.github.io/の知識の古いエラー、より良い読書体験を誤解を避けるために、。
この作品は、ある非営利- -同一条件許諾4.0の国際ライセンス契約クリエイティブ・コモンズのライセンスのために。転載、使用、再投稿が、(リンクを含む:黄Tengxiaoによって署名記事に保つようにしてくださいへようこそhttps://xinyuehtx.github.io/は)、紙のライセンス変更に基づいて、同じ作業を公開するようにしてください、商業目的のために使用してはなりません。ご質問があれば、してください私に連絡。