15

これはWindows2003(またはそれ以降)のマシンで、毎朝電源が入りますが、数時間後まで誰もログオンしません。

その間の時間を使ってバックアップスクリプトを実行したいc:\ script \ backup.cmd

マシンが起動した後、どうすればこれを無人で開始できますか?

2つのレジストリキーを試しましたが、ユーザーがログオンした後にスクリプトが実行されました(遅すぎます)。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

結局、そのようなオプションのあるWindows TaskSchedulerを使用しましたが、別の可能性があるのではないかと思いました。

4

5 に答える 5

19

簡単な答え: GPEDIT.MSC (開始、実行、GPEdit.msc)

Windows 2000 以降 [1] では、ポリシー エディターでコンピューターのスタートアップ スクリプトコレクションが提供されます。

  • コンピューターの設定-> Windows の設定->スクリプト (スタートアップ/シャットダウン)

ユーザー構成ビットには、同等のログオンスクリプト領域 (つまり、コンピューターの起動後、ユーザーのログオン時) があります。

より長いです:

GPEDIT.MSC はグループ ポリシー編集コンソールであり、直接使用するとローカル コンピューターのローカル グループ ポリシー ストアに対して実行されるため、ローカルのみのパラメーターを設定するのに役立ちます。Active Directory を使用する場合、同様のインターフェイスを使用して AD フォレストでホストされるグループ ポリシー オブジェクト(GPO)を編集するため、多数のマシンで同じ設定を使用できます。

コンピューターの起動スクリプトは、コンピューター コンテキスト、つまり LocalSystem として実行されるため、特定のユーザーまたはグループ メンバーシップが機能する必要があるネットワーク ドライブにアクセスできないことがよくあります。ドメイン メンバー コンピューターがネットワーク リソースにアクセスする場合、通常は (例外を除いて) MACHINENAME$ アカウントを使用して認証します。これにより、共有/NTFS アクセス許可を設定して、コンピューターがそれらのリソースにアクセスできるようになります。

起動スクリプトは、マシンの起動時にプロセスを実行するための迅速かつ簡単な方法です。

ただし、コンピューターの起動プロセスはプログラムの実行にかかる時間の影響を受けるため、バッチ ファイルから START コマンドを使用して呼び出すか、スクリプトで実行可能ファイルが完了するまで待機しないように指定することをお勧めします。あなたが使用する言語。(重要な点は、重要でない限り、スクリプトを非同期で実行するか、非同期で実行する必要がないため、常にまったく時間がかからないことです。長時間のブート = 不幸なユーザー)。

Win32 サービスを使用することも代替オプションです。リソース キットのSRVANYユーティリティを使用して、ほぼすべての実行可能ファイルを "サービス化" できます。VS.Net 2002 以降では、マネージド サービスを直接構築することもできます。

また、タスク スケジューラは、Vista/2008 の時点ではるかに機能が向上しており、起動時、アイドル時、および/またはイベント ログが生成されたときやその他の特定の条件が満たされたときにスクリプトを実行できます。非常に優れています。スケジュールされたタスクには、重要な場合に、タスクを実行するユーザー アカウントを指定できるという利点があります。

警告スクリプト作成者: http://support.microsoft.com/kb/256320

スタートアップ スクリプトを非同期的に実行する: http://msdn.microsoft.com/en-us/library/ms811602.aspx

Vista タスク スケジューラ (新機能): http://technet.microsoft.com/en-us/appcompat/aa906020.aspx

[1] Windows XP、2003、Vista/2008、Windows 7/2008R2、Windows 8/2012、Windows 8.1/2012R2、Windows 10/Windows Server 2016。しかし、NT4 はそうではありませんでした。

于 2009-03-06T00:32:09.990 に答える
8

あなたはすでに良い解決策を概説しました:

起動時に実行するようにスケジュールされたタスクを設定し、ユーザーがログオンしていないときにジョブを実行できるようにします。

于 2009-03-05T13:36:19.643 に答える
1

グループポリシーgpedit.mscを使用して、システムの起動時にスクリプトを実行できます。

于 2009-03-05T13:40:50.913 に答える
0

あなたがこれを行う方法は私には問題ないようです。ただし、別のアプローチが必要な場合は、マシンの起動時にサービスが開始されるため、(再起動を可能にするために)新しい日であるかどうかを検出し、バックアップを実行するサービスを作成できます。

これサービスとして実行している場合は、TCLを使用します。これは、TCLを知っていて気に入っており、スクリプトをサービスとして実行できる拡張機能twapiを備えているためです。他のスクリプト言語にも同様の機能がある場合があります。

于 2009-03-05T13:43:37.397 に答える