165

現在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つではないと思います。

Runasも使用してみましたが、スケジュールされたタスクを実行したときと同じ制限が発生していると思います。

これまでのところ、私の試みはそれぞれ失敗に終わっています。助言がありますか?

4

10 に答える 10

254

個人的にテストしたわけではありませんが、上記の AT COMMAND ソリューションが XP、2000、および Server 2003 で機能すると信じるに足る十分な理由があります。または Windows Server 2008 -- おそらくセキュリティが強化され、/interactive スイッチが非推奨になったためです。

しかし、SysInternals (2006 年 7 月に Microsoft によって買収された) の PSTools の使用を示すこの記事に出くわしまし。次方法でコマンド ラインを起動すると、突然、魔法のようにローカル管理者アカウントで実行されました。

psexec -i -s cmd.exe

PSTools はうまく機能します。これは、私の問題に対する適切な解決策を提供する、軽量で十分に文書化されたツールのセットです。

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

于 2008-09-17T00:36:37.227 に答える
65
  1. Sysinternals から psexec.exe をダウンロードします。
  2. C:\ ドライブに配置します。
  3. 標準ユーザーまたは管理ユーザーとしてログオンし、次のコマンドを使用しますcd \。これにより、psexec があるドライブのルート ディレクトリに移動します。
  4. 次のコマンドを使用しますpsexec -i -s cmd.exe。 -i はインタラクティブ、-s はシステム アカウントです。
  5. コマンドが完了すると、cmd シェルが起動されます。タイプwhoami; 「システム」と表示されます
  6. タスクマネージャーを開きます。explorer.exe を終了します。
  7. 昇格したコマンド シェル タイプからstart explorer.exe.
  8. エクスプローラーを起動すると、スタート メニュー バーに「system」という名前が表示されます。これで、system32 ディレクトリ内のいくつかのファイルを削除できます。これらのファイルは、管理者として削除できないか、管理者として、それらのファイルを削除するために権限を変更するのに苦労する必要があります。

Windows の保護されたディレクトリ内のシステム ファイルの名前を変更または削除しようとするユーザーは、ファイルの名前を変更している間、すべての Windows ファイルが DACLS によって保護されていることを知っておく必要があります。ファイルの所有者として管理者グループに属し、許可を変更した後に名前を変更しようとすると、機能し、カーネル特権で Windows エクスプローラーを実行している間は、セキュリティ上の理由からネットワーク アクセスに関して多少制限されており、まだ研究トピックです。アクセス権を取り戻すために

于 2013-06-07T01:17:01.513 に答える
10

binPath パラメータに /k start を追加することで問題を解決すると思われる回答が見つかりました。したがって、次のようになります。

sc create testsvc binpath= "cmd /K start" type= own type= interact

しかし、Ben はそれがうまくいかなかったと言いました。私が Windows Server 2008 で試したところ、ローカル システムで cmd.exe プロセスが作成されましたが、対話型ではありませんでした (ウィンドウが表示されませんでした)。

あなたが求めていることを行う簡単な方法はないと思いますが、なぜあなたはそれをしているのでしょうか? サービスを実行しているときに何が起こっているのかを確認しようとしているだけですか? exeをローカルシステムとして実行する代わりに、ロギングを使用して何が起こっているかを判断できるようです...

于 2008-09-16T21:56:26.940 に答える
4

これに代わる方法は、次のように実行する場合のプロセスハッカーです...(セキュリティが強化されているユーザーにはインタラクティブは機能しませんが、それは問題ではありません)ボックスが開いたら、サービスをボックスタイプに入れ、システムをユーザーボックスに入れてCを入れます:\ Users \ Windows \ system32 \ cmd.exe残りの部分をクリックして[OK]をクリックすると、cmdが表示されたウィンドウが表示され、システムが他の手順を実行するようになります。

于 2011-02-21T08:24:52.477 に答える
2

(コメント)

まだコメントできないので、ここに投稿します...上記のOSK.EXEデバッグトリックを試しましたが、塗りつぶされた「C:\windows\system32\cmd.exe」を既に作成されたデバッガーキーに保存すると、regeditが即座に閉じますそのため、Microsoft はこれを行うネイティブな方法をブロックするために積極的に取り組んでいます。他のことがこれを引き起こさないので、それは本当に奇妙です。

タスク スケジューラを使用すると SYSTEM CMD が作成されますが、これはシステム環境にあり、人間のユーザー プロファイル内には表示されないため、これも機能しなくなりました (論理的ではありますが)。

現在 Microsoft Windows [バージョン 10.0.20201.1000]

したがって、現時点では、これを仲介するのはサード パーティ製のソフトウェアである必要があり、最近では Microsoft によってさらなるトリックがより積極的に封印されています。

于 2021-02-02T08:15:55.307 に答える
1

インタラクティブである必要のないバッチ ファイルを作成できる場合は、そのバッチ ファイルをサービスとして実行して、必要なことを実行してみてください。

于 2008-09-16T21:56:56.703 に答える
1

タスク スケジューラを使用して、適切な引数 /add: /user: および /pass: を使用して、SYSTEM で実行されている CMDKEY の実行をスケジュールします。

何もインストールする必要はありません。

于 2019-05-31T17:28:06.410 に答える