
問題は、非 AD 非ドメイン環境の Windows 2008r2 サーバーを含むネットワーク上の、最新の更新プログラムを適用した Windows 7 システムで発生します。
ファイル エクスプローラーまたはアプリケーション内から、保存した資格情報を使用して \\server\share にアクセスできます。サーバー上のユーザーのアカウント権限に従って、読み取り/書き込みアクセス権があります。コマンド ウィンドウから「net use \\server\share」と入力すると、詳細が表示され、「コマンドが正常に完了しました」というメッセージが表示されます。
スケジュールされたタスクから起動された CMD バッチ ファイルでは、ユーザー名とパスワードの入力を求めるため、net use \\server\share によってスクリプトがハングすることがあります。
失敗したスケジュール タスク ウィンドウがプロンプトでフリーズしているのがわかります。別のコマンド ウィンドウを起動して「net use \\server\share」と入力すると、動作します。
停止したタスクを見つけてコマンド ウィンドウから実行すると、次のようになります。
タスク スケジューラからスケジュールされたタスクを再実行すると、タスクは正常に実行され、Net Use でハングアップすることはありません。タスクがシステムによって開始された場合にのみ、ログインに問題があるようです。
net use が資格情報 (ローカル マシンに保存されている) を要求することがあるのはなぜですか? このスケジュール タスクを確実に実行するにはどうすればよいですか?
答え1
問題は、最近の Windows Update 以降、昇格されたスケジュールされたタスクが、システムではなくプライマリ ユーザーとして実行されているにもかかわらず、ネットワーク アクセス用に保存された資格情報を確実に使用できなくなったということのようです。
この問題のために、マシン上で UAC をグローバルに無効にしたくありませんでした。タスクの CMD ファイルにユーザー名とパスワードを入力したくありませんでした。
私の妥協案は、このタスクのために、サーバー上に特定の制限された権限を持つ新しいアカウントを作成することです。このタスクに必要な特定のリソース用に、サーバー上に新しい共有を作成しました。(specialshare) スケジュールされたタスクでは、既存のログインをすべて削除し (時々存在するように見えるため)、制限されたアカウント資格情報 (CMD ファイル内) を使用してサーバーに接続します。
NET USE \\server /D
NET USE \\server /U:limiteduser junkpassword
... run the rest of the scheduled task, perform network access to \\server\specialshare...
NET USE \\server /D
理想的ではありませんが、機能しているようです。より良いアプローチがある場合は、コメントしてください。