Windowsサービスを作成したアカウントを照会する方法


1

おはようございます
。Windowsサービスを組み込んだ製品のインストール手順を書いています。そのサービスをインストールするには、構成を参照するラッパーが使用されます(java -jar wrapper.jar -i <product>.conf)。

アカウントへのリンクがあるようです。WindowsサービスがAccount1としてインストールされている場合、Account2で開始/停止することはできません。

したがって、私(Account2)はWindowsサービスに問い合わせて、「Account1でインストールされている場合は、アンインストールする必要があります。自分でインストールします」と言います。

さて、質問:どのアカウントが上記のWindowsサービスをインストールしたかを知るにはどうすればよいですか?私はすでに試しました:

  • sc query <Service_Name>
  • sc qc <Service_Name>
  • sc qprivs <Service_Name>
  • sc qmanagedaccount <Service_Name>
  • sc quserservice <Service_Name>
  • wmic service <Service_Name> list full

(なるほど、私は必死になっています:-))

上記のコマンドはいずれも、ユーザー名「Account1」を指定していません。

誰もこれを行う方法を知っていますか?


総当たり的なアプローチを使用していない理由はありますか(常に削除と追加を繰り返します)?セキュリティ記述子を変更しようとしましたか?別のアカウントで開始または停止できない場合、そのアカウントには許可が不足している可能性があります。アカウントは他のサービスを開始/停止できますか?
セス

まったく重複していませんsuperuser.com
a / 315709/1686

顧客は異なるアカウントを持っています。最初のアカウントを使用して、Windowsサービスのインストールを含むインストール全体を実行します。その後、彼はそのWindowsサービスに基づいて完全な構成を実行します。その後(更新のみ)、彼は別のユーザーとしてログオンし、更新を開始します。私のインストール手順では、Windowsサービスをアンインストールおよび再インストールします。2つの問題があります。ユーザー名が間違っている(最初のユーザー名である必要があります)と、構成が失われます。したがって、別のユーザー名でWindowsサービスをインストールできるようにしたいと思います(しかし、現在のサービスを知る方法は?)。
ドミニク

回答:


0

どのアカウントがWindowsサービスをインストールしたかを知るにはどうすればよいですか?

wevtutilこの情報を取得するために使用できます:

イベントログと発行元に関する情報を取得します。自己完結型の形式でログをアーカイブする、利用可能なログを列挙する、イベントマニフェストをインストールおよびアンインストールする、クエリを実行する、イベントを(イベントログから、ログファイルから、または構造化クエリを使用して)指定されたファイルにエクスポートする、イベントログをクリアする。

探す必要があるイベントは、イベントID 4697です。サービスがシステムにインストールされました。

件名に示されているユーザーによって新しいサービスがインストールされました。多くの場合、サブジェクトはネイティブWindowsコンポーネントの一部としてインストールされたサービスのローカルシステム(SYSTEM)を識別するため、実際にインストールを開始したユーザーを特定することはできません。

件名:

アクションを実行したユーザーおよびログオンセッション。

  • セキュリティID:アカウントのSID。
  • アカウント名:アカウントのログオン名。
  • アカウントドメイン:ドメイン、またはローカルアカウントの場合はコンピューター名。
  • ログオンIDは、ログオンセッションを識別する半一意の(再起動間で一意の)番号です。ログオンIDを使用すると、同じログオンセッション中に記録された他のイベントと同様に、ログオンイベント(4624)と逆方向に関連付けることができます。

サービス情報:

  • サービス名:新しいサービスの内部システム名。「sc query」を使用して、サービス名とそれらのより馴染みのある表示名の相互参照を取得します。

次のコマンドはAccount Name、最後に作成されたサービスを表示します。

wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=4697)]]"

sc createコマンドを使用してサービスを作成した場合は、イベントID:7045ソース:サービスコントロールマネージャーを検索し、検索する必要がありますUser Name

wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=7045)]]"

例:

> sc create Notepad binpath= c:\windows\system32\Notepad.exe
[SC] CreateService SUCCESS

> wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=7045)]]"
Event[0]:
  Log Name: System
  Source: Service Control Manager
  Date: 2017-04-07T14:35:32.600
  Event ID: 7045
  Task: N/A
  Level: Information
  Opcode: N/A
  Keyword: Classic
  User: S-1-5-21-1699878757-1063190524-3119395976-1000
  User Name: Hal\DavidPostill
  Computer: Hal
  Description:
A service was installed in the system.

Service Name:  Notepad
Service File Name:  c:\windows\system32\Notepad.exe
Service Type:  user mode service
Service Start Type:  demand start
Service Account:  LocalSystem

参考文献

  • Windows CMDコマンドラインのAZインデックス -Windowsのcmdラインに関連するすべてのものの優れたリファレンス。
  • sc-サービスコントロール-Windowsサービスを作成、開始、停止、クエリ、または削除します。
  • wevtutil -Windowsイベントコマンドラインユーティリティ。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.