| この記事の要点 |
|
このエラーの典型
C:\opt\tomcat\bin> service.bat install
Installing the service 'Tomcat9' ...
Using CATALINA_BASE: "C:\opt\tomcat"
Using CATALINA_HOME: "C:\opt\tomcat"
...
Install/Remove of the Service Denied!
C:\opt\tomcat\bin> service.bat remove
Removing the service 'Tomcat9' ...
Install/Remove of the Service Denied!
Windows のサービス登録/削除は SC_MANAGER_CREATE_SERVICE 権限が必要で、通常ユーザでは拒否されます。
原因
- cmd / PowerShell を通常モードで起動している
- UAC (User Account Control) が有効で、管理者アカウントでも昇格していない
- そもそも管理者グループに属していないアカウント
- グループポリシーでサービス操作が制限されている
対処 1: 管理者として実行
もっとも確実。Win キー → 「cmd」または「powershell」と入力 → Ctrl+Shift+Enter で管理者起動。または:
- スタートメニュー → 「Windows ターミナル」または「コマンドプロンプト」を右クリック
- 「管理者として実行」
- UAC ダイアログで「はい」
- タイトルバーに「管理者:」と表示されることを確認
対処 2: 管理者状態かをコマンドで確認
# PowerShell で確認
([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator)
# True なら管理者、False なら通常モード
# cmd で確認
net session > nul 2>&1 && echo Administrator || echo Not admin
対処 3: スクリプト内から自動昇格
# install-tomcat.ps1
if (-not ([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator)) {
# 自分自身を管理者で再起動
Start-Process powershell.exe `
-ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" `
-Verb RunAs
exit
}
# ここからは管理者として実行される
cd C:\opt\tomcat\bin
.\service.bat install
sc.exe config Tomcat9 start= auto
sc.exe start Tomcat9
サービス操作の標準コマンド
# 管理者 PowerShell で
# サービス作成
sc.exe create MyService binPath= "C:\path\to\app.exe" start= auto
# サービス削除
sc.exe delete MyService
# 開始 / 停止
sc.exe start MyService
sc.exe stop MyService
net start MyService
net stop MyService
# 状態確認
sc.exe query MyService
Get-Service MyService
# 自動起動設定
sc.exe config MyService start= auto
Set-Service -Name MyService -StartupType Automatic
Tomcat の service.bat 詳細
# 管理者 cmd / PowerShell で
cd C:\opt\tomcat\bin
# デフォルト名 (Tomcat9, Tomcat10) でインストール
.\service.bat install
# カスタム名でインストール
.\service.bat install MyTomcat
# JVM オプション等の設定 GUI
.\tomcat9w.exe //ES//Tomcat9
# 削除
.\service.bat remove
.\service.bat remove MyTomcat
nginx を Windows サービス化
nginx 自体はサービス機能を持たないので NSSM (Non-Sucking Service Manager) や winsw を使うのが定番:
# Chocolatey で NSSM
choco install nssm -y
# 管理者 PowerShell で
nssm install nginx "C:\nginx\nginx.exe"
nssm set nginx AppDirectory "C:\nginx"
nssm set nginx Start SERVICE_AUTO_START
nssm start nginx
# 削除
nssm remove nginx confirm
MySQL を Windows サービス化
# 管理者 cmd で MySQL のインストールフォルダへ
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
# サービス登録
.\mysqld --install MySQL80 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
# 削除
.\mysqld --remove MySQL80
# 起動
net start MySQL80
グループポリシーで制限されている場合
gpedit.mscを管理者起動- コンピュータの構成 → Windows の設定 → セキュリティの設定 → ローカル ポリシー → ユーザー権利の割り当て
- 「サービスとしてログオン」, 「サービスとしてログオンを拒否する」を確認
- ドメイン環境では Active Directory 側 GPO の制約を IT 管理者に依頼
FAQ
Q: 管理者で起動しても Denied になる
A: アンチウイルス(特に法人向け Symantec / Trend Micro)がサービス改変をブロックしているケース。一時的に無効化 → 再試行。
Q: コマンドプロンプトを毎回管理者で起動するのが面倒
A: ショートカットのプロパティ → 詳細設定 → 「管理者として実行」を ON にしておく。または PowerShell プロファイルで関数化。
Q: Linux でも同じことを?
A: Linux は systemctl に sudo を付ければよく、エラーメッセージは Permission denied / Failed to issue method call。
子ページ
子ページはありません
同階層のページ
- 1071 Specified key was too long; max key length is 767 bytes
- ERROR 1063 (42000): Incorrect column specifier for column '~'
- mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
- Install/Remove of the Service Denied!
- Datetime 型が NULL に見える
- Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
- ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- Exception: Wrong MySQL configuration
- [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- Incorrect column specifier for column 'カラム名'
- BLOB/TEXT column 'description' used in key specification without a key length
- ERROR: /bin/sh: mysql_config: コマンドが見つかりません
- Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
- CSVエクスポート時に「ERROR 1045 (28000): Access denied for user 'username'@'localhost'」エラーが表示される
- Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38