1. ホーム
  2. windows-services

[解決済み] ローカルシステムアカウントでCMD.exeを実行する方法を教えてください。

2022-03-15 02:47:07

質問

現在Vistaを使用していますが、Windowsサービスと同じ操作を手動で行いたいと考えています。Windowsサービスはローカルシステムアカウントで動作しているので、これと同じ動作をエミュレートしたいのです。基本的には、ローカル システム アカウントで CMD.EXE を実行したいと思います。

DOSタスクスケジューラのATコマンドでCMD.exeを起動するという情報をネットで見つけたのですが、Vistaの警告で「セキュリティ強化のため、このタスクは指定した時間に実行されますが、対話的には実行されません」と表示されました(以下、コマンド例)。

AT 12:00 /interactive cmd.exe

また、CMD.exeを起動するだけのサービスコントロール(sc.exe)を使って、セカンダリWindowsサービスを作成する方法も提案されています。

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

この場合、サービスの起動に失敗し、次のようなエラーメッセージが表示されます。

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

3つ目の提案は、CMD.exeをスケジュールタスクで起動することでした。スケジュールされたタスクは様々なアカウントで実行できますが、ローカルシステムアカウントはそのうちの1つではないと思います。

ルナも使ってみましたが、スケジュールタスクを実行したときと同じような制約があるように思います。

これまでのところ、私の試みはすべて失敗に終わっています。何かいい方法はないでしょうか?

解決方法は?

個人的にテストしたわけではありませんが、上記のAT COMMANDによる解決策は、XP、2000、Server 2003で動作すると信じるに足る十分な根拠があります。私とBryantのテストによると、VistaとWindows Server 2008では同じ方法が使えないことが判明しました。

しかし、私はこのようなものに出会いました。 記事 を使用することを実証しています。 PSTools から シスインターナルズ (でコマンドラインを立ち上げると、突然、魔法のようにローカル管理者アカウントで実行されるようになりました。

psexec -i -s cmd.exe

PSToolsはよく動く。それは軽量で、よく文書化されたツールのセットで、私の問題に対して適切な解決策を提供してくれます。

助けてくれた人たちに感謝します。