web-dev-qa-db-ja.com

ドメイン上にないときに画面タイムアウトグループポリシーを回避または変更するにはどうすればよいですか?

お客様のサイトでPowerPointやExcelでプレゼンテーションを行うリモートラップトップユーザー向けのソリューションを検討するように求められました。 Server 2008/Win 7環境を実行しています。非アクティブな状態が5分間続くと全員のPCをロックし、再度ログインするにはパスワードを要求するグループポリシーがあります。ラップトップのユーザーがログインしているが、ドメインにローカルにいない場合、この設定を変更できるかどうか尋ねられました。 PP、Word、またはExcelでプレゼンテーションを行っているときに画面がロックしないように調整できるようにしたいと考えています。私の知る限り、PowerPointはフルスクリーンモードのときにスクリーンセーバーを無効にしますが、他のプログラムでこれを実現する方法はわかりません。ラップトップのプレゼンテーションモードを試してみましたが、グループポリシーのため、「スクリーンセーバーを無効にする」設定はグレー表示されています。何か案は?ありがとう。

5
Joe B

私が最初に提案したpresentationsettingsツールは、ユーザーがスクリーンセーバーを変更できないようにするグループポリシー設定を "尊重"していることを自分で実証することができました。私はこの動作を認識していませんでしたが、ユーザーがこのツールを使用して、プレゼンテーションに関連することが何も起こらなかったときにスクリーンセーバーを免除することを考えれば、当然のことです。

「リモート」ラップトップコンピュータに適用されるため、@ HopelessN00bが言及しているように、グループポリシーを変更することをお勧めします。スクリーンセーバーの設定はコンピューターごとではなくユーザーごとであるため、 ループバックポリシー処理 を呼び出す必要があります。ループバックポリシー処理を使用すると、ログオンしたユーザーに関係なく、ユーザー設定をコンピューターに適用できます。

残念ながら、この機能は多くの人を混乱させます。いくつかの異なる「モード」(マージと置換)があり、さらに混乱します。アプリケーションの場合、リンクGPOへのリンクを作成できます。 "GPO $ ==="は、 "コンピューターの構成"セクションの "マージ"モードでループバックポリシー処理を有効にします。 [ユーザーの構成]セクションで、スクリーンセーバーのプロパティを好きなように設定します。次にこれらのマシンを再起動すると(非ループバックからループバックへの切り替えには再起動が必要になるため、バックグラウンドポリシーの更新では有効になりません)、マシンがこの新しいGPOからスクリーンセーバー設定を取得し始めるのを確認してください。

ユーザーのレジストリに到達し、グループポリシーのスクリーンセーバーの制限値を切り替えるために、ある種のハッキングされたクライアント側のサービスプログラムを書くのではありません(レジストリのアクセス許可のためにユーザーが自分で行うことはできないため)。悪の少ない方を選択し、ラップトップコンピューターのユーザーに対するスクリーンセーバーの制限を無効にするか、サードパーティの「マウスジグラー」またはキーボードシミュレーションソフトウェアを使用するか、単にユーザーに共存させる必要がある状況それ。


編集:

あなたが探していることを実行できるサードパーティのプログラムはいくつもありますが、組み込みのOSコンポーネントのみで実行することには「優雅さ」があります。

以下は、wscript.exeによる実行に適した小さなVBScriptプログラムです(つまり、これをグループポリシーの基本設定でコンピューターの "スタートアップ"フォルダーに直接展開できます)。これは、ドメインがDNS名は、ネットワークの外部で解決できません。 (それが外部的に解決できる場合、率直に言って、あなたはあなたが値するものを得ます。)

このスクリプトは、nslookupを使用してUSERDNSDOMAIN環境変数で指定されたドメインを解決するポーリングループにあります。 10秒ごとにポーリングしますが、Const POLL_DELAY行を変更することで変更できます。 (wscript.exeのみで実行すると、ポーリング間隔ごとにウィンドウが一時的に表示されるため、自分自身を再度実行するという奇妙な旋回が必要ですが、これは良いことではありません。)

ドメイン名が解決しない場合、「F15」キーが「押され」、Windowsがスクリーンセーバーをアクティブにしない十分なアクティビティが発生します。

このスクリプトは、管理用テンプレート設定を含むグループポリシーオブジェクトが適用されているドメインユーザーを使用してログオンしたWindows 8.1 x64でテストされました。

  • スクリーンセーバーを有効にする-有効
  • デスクトップの背景を変更できないようにする-有効
  • スクリーンセーバーを変更できないようにする-有効
  • スクリーンセーバーのパスワード保護-有効
  • スクリーンセーバーのタイムアウト-有効-30秒
  • 特定のスクリーンセーバーを強制する-有効-scrnsave.scr

テスト方法は次のとおりです。

  • ss.vbsという名前のプログラムをコンピューターの「スタートアップ」フォルダーに配置します。
  • 上記のグループポリシー設定が適用されたユーザーとしてコンピューターにログオンします。
  • 30秒間何も操作しないとスクリーンセーバーが起動することを確認する
  • マシンのロックを解除します
  • コンピュータのネットワークインターフェイスカードを取り外します。
  • 数分間操作がないとスクリーンセーバーが起動しないことを確認します
  • コンピュータのネットワークインターフェイスカードを再接続します。
  • 30秒間何も操作しないとスクリーンセーバーが起動することを確認する
  • ログオフして、スクリプトが「ハング」したり、ログオフプロセスを妨害したりしないことを確認します。

Windows 8.1 x64マシンでは、スクリプトはまさに私が望んでいることをしています。

Option Explicit

' Delay, in seconds, between attempts to resolve the domain name 
' and pressing the "F15" key.
Const POLL_DELAY = 10

Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")

Dim objExec
Dim intFound

If UCase(Right(WScript.Fullname, 11)) = "WSCRIPT.EXE" Then
    While 1
        intFound = objShell.Run("cscript.exe """ & WScript.ScriptFullName & """", 0, True)

        If intFound = 255 Then objShell.SendKeys("{F15}")

        WScript.Sleep(POLL_DELAY * 1000)
    Wend
Else
    Set objExec = objShell.Exec("nslookup " & objShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%"))

    While Not objExec.StdOut.AtEndOfStream
        If Left(objExec.StdOut.ReadLine, 5) = "Name:" Then WScript.Quit(0)
    Wend

    WScript.Quit(255)
End If
4
Evan Anderson

これを処理する一般的な方法は、「リモート」ワーカーとして定義されたユーザーまたはマシン用の個別のポリシーセットです。たとえば、Remote Laptop Usersという名前のOUがあります。これにより、これらのユーザーは、まさにこの理由により、ディスプレイと電源の設定をより詳細に制御できます。 (WMIフィルタリングまたはセキュリティフィルタリングを使用して、同じ結果を実現したい場合や、これらのオブジェクトが含まれているOUを変更できない場合もあります)。

ユーザーにEvan Andersonの提案する プレゼンテーション設定 ツールを使用させることができればそれはすばらしいことですが、私の経験では、この種のことについて不平を言うユーザーは持ち上げないユーザーでもあるということです問題を修正し、ITがそれらを修正することを期待するため、別のGPOを使用して修正する必要があるかもしれません。

2
HopelessN00b