5

ユーザーがログオフするたびに実行したいスクリプトがいくつかあります。プログラムでログオフ スクリプトを設定するものを作成したいと思います。たとえば、Windows が実行するログオフ スクリプトのリストにログオフ スクリプトを追加するために実行できる exe または cmd ファイル。このため、Windows API 関数または Windows シェル コマンドが望ましいですが、これに役立つ関数やコマンドは見つかりません。

ローカル グループ ポリシー エディタを使用してログオフ スクリプトをグループ ポリシーに追加するときに行うレジストリ編集を確認しましたが、真似できるかどうかわからない多くのことを行います。たとえば、多くのレジストリ編集を行い、一部のレジストリ キーで数値コードを使用し、一部の値でバイナリ データを使用します。値が何を表しているのかわかりません。

私は、GPEdit が行う変更のサブセットを試してみましたが、それでも機能することを期待しています。たとえば、変更内容を HKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logoff にエクスポートして、別の PC にインポートしましたが、うまくいきませんでした。変化する。

私が言ったように、Windows API 関数のセットまたは Windows シェル コマンドは、役立つものを誰かが知っている場合に望ましいですが、GPEdit が作成する情報のヒープを解読する方法を誰かが知っている場合は、私がモックすることができます。それなら、安定している限り、レジストリの変更に反対しているわけではありません。

私が見つけて使用するソリューションが何であれ、psexec を使用して多くのコンピューターに対してリモートで実行され、セットアップされる将来の PC の自動セットアップ プロセスにも含まれるため、自動で信頼できるものでなければなりません。

残念ながら、これは Google にとって難しいトピックのようです。人々が行おうとしている他の多くのことには、私が検索したキーワードと同じものがたくさんありますが、実際には同じトピックではないからです。たとえば、アプリを実行するためのシャットダウン/ログオフ フック、またはユーザーをリモートでログオフします。

誰かが Windows レジストリまたは MMC のウィザードで、GPEdit MMC が同じことを行ったときにレジストリの変更のダンプを見ると役立つと思う場合は、そのように言ってください。それ。それが正しい道だとは思えませんが、MMC スナップイン ツールを作成する方法を調べ始めました。私の考えでは、おそらく GPEdit スナップイン自体をリバース エンジニアリングして、その動作を簡単な方法で正確に確認できるようにすることができます。私が見る .adm ファイルにはこの設定がないように見え、gpedit.msc ファイルにはプレーンテキスト部分にそれを与えるものは何もないように見えますが、意味不明に見えるセクションなので、そこにはある種の魔法が起こっているのかもしれません.

4

2 に答える 2

3

タスク スケジューラは、Windows Vista 以降でこれを行うことができます。Windows XP 以前の場合、適切な答えはないようです。XP には、以下に示す「ユーザー セッションからの切断時」トリガーがありません。

Windows でタスクをスケジュールするための主なコマンド ライン ユーティリティには、at.exe と schtasks.exe の 2 つがあります。どちらもそれ自体では、GUI インターフェイスから取得できるすべてのオプションを提供しているようには見えません (ただし、schtasks は非常に近いものです)。ただし、タスク スケジューラにはスケジュールされたタスクを記述する XML 形式があり、schtasks.exe には XML ファイルからタスクをインポートするオプションがあります。

ログオフ スクリプトを作成するには、作成するタスクを記述した XML ファイルを作成します。必ず「ユーザー セッションからの切断時」のトリガーを使用し、「任意のユーザー」(昇格された特権が必要) および「ローカル コンピューターからの接続」からのログオフを選択してください。必要なすべてのログオフ アクション (ログオフ スクリプトなど) をタスク アクションとして設定します。

Microsoft は、XML の例を含む、タスク スケジューラのタスクを開発するための例のリストを持っています。このリストはここにあります

または、GUI ツールを使用して一度タスクを設定し、タスク リストに表示されるタスクを右クリックして [エクスポート] を選択することもできます。タスクを XML 形式で保存できる保存ダイアログが表示されます。

次に、次のコマンドを使用してタスクのセットアップをスクリプト化します。

schtasks /create /tn "Task Name Here" /XML "path to xml file here" /ru domain\username /rp "password"

注: タスク スケジューラを使用する提案については、user606602 に部分的なクレジットを与える必要があります。私は彼の提案のスクリプト化されたバージョンで彼の回答を編集して受け入れようとしましたが、ピアレビューは編集を拒否しました.

于 2011-06-21T18:58:13.833 に答える
1

Windowsタスクスケジューラを使用してスクリプトを起動するだけではいけませんか?

新しいバージョンのタスクスケジューラ(Windows Server 2008、Windows Vista / 7など)では、ユーザーがログオフしたときにトリガーされるスクリプトを実行するオプションを使用できるようにする必要があります。

こちらをご覧ください

新しいタスクを作成してから、新しいトリガーを作成するだけです。このウィンドウで、ドロップダウンメニューから[ユーザーセッションから切断する場合]を選択し、タスク構成ウィンドウの[アクション]タブから実行するスクリプトを選択します。

于 2011-06-20T21:57:31.010 に答える