web-dev-qa-db-ja.com

Windows 7の制限付きユーザーアカウントからオンデマンドでタスクスケジューラタスクを実行する

私の目標は、管理者特権を必要とするnetshスクリプトを実行できるように限定的に使用することです。

netsh wlan stop hostednetwork
netsh wlan start hostednetwork

私の管理者アカウントから、管理者特権でこのスクリプトを実行するタスクスケジューラタスクを作成し、管理パスワードを保存しました。出来た。ただし、タスクは制限付きユーザーアカウントからは表示されません。

制限付きユーザータスクスケジューラから同じタスクを作成しようとしましたが、実行できませんでした。ユーザーにタスクを作成する権限がないことが通知されました。

制限付きユーザーからschtasks.exeを試しましたが、実行したいタスクも表示されません。

管理アカウントから作成したタスクを制限付きのユーザーと共有して、オンデマンドで実行できるようにする方法はありますか?または、自分でタスクを作成する権限を彼に与えますか?

7
Boris Hamanov

C:\ Windows\System32\Tasksに移動し、関連するタスクを見つけて、アクセスできるようにするユーザーに「読み取りと実行」権限を割り当てます。必ず「現在のオブジェクトのみ」に割り当ててください。次に、タスクは制限されたユーザーから表示され、実行可能になります。資格情報をタスクに保存し、「ユーザーがログオンしているかどうかにかかわらず実行する」をオンにすると、タスクは機能します。

17
Boris Hamanov

うん、それはひどい問題だ。選択した回答が機能しなくなりました。回避策としてイベントログを使用しています。

  1. タスクの「イベント時」トリガーを登録します。 「アプリケーション」、「アプリケーション」、30204(このタスクのマジックナンバー)

  2. このIDでイベントをログに記録します。コマンドライン/バッチからそれを行うために、ダミーの3行の.Netコンソールアプリを作成しました。

    using (var eventLog = new EventLog("Application"))
    {
        eventLog.Source = "Application";
        eventLog.WriteEntry("EventLogTriggeer", EventLogEntryType.Information, int.Parse(args[0]));
    }

私の場合、ステージング環境での自動デプロイメントのセキュリティを解決しました。 GitHubはPOSTで実行される私のnode.jsバックエンドへのリクエストを作成しますIIS AppPool Identityにフォルダーへのr/oアクセスが含まれます。ハッシュ署名を検証し、実行:

// delegate to priviledged task
exec('%SystemDrive%\\apps\\EventLogTrigger 30204', (err, stdout, stderr)=> /* ... */);

残りの部分は、inetpub内のファイルを変更する権限を持つユーザーで展開スクリプトを実行するスケジュールされたタスクを介して行われます。タスクは、サーバーおよびサーバー上の各Webサイトに対して個別に構成されているため、パスはハードコーディングされています。

C:\inetpub\ta\autodeploy.cmd
3
Dmitry Gusarov