Home > Windows にまつわる e.t.c.

リモートデスクトップの自動ログオフ設定


リモートデスクトップ環境を構築すると、GPO て自動ログオフ設定が設定できますが、これは管理リモートデスクトップにも適用できます。

GUIで設定する場合は、GPOか、ローカルポリシー(gpedit.msc)で設定します

[コンピュータの構成]-[管理用テンプレート]-[Windows コンポーネント]-[リモート デスクトップ サービス]-[リモート デスクトップ セッション ホスト]-[セッションの時間制限]

・切断されたセッションの制限時間を設定する
・アクティブでアイドル状態になっているリモート デスクトップ サービス セッションの制限時間を設定する

この設定は、レジストリーに設定されるので、ワークグループ環境やリモートデスクトップサービスを構築していない環境で展開する場合は、レジストリー設定するって手も使えます。

(レジストリの msec 表記は16進になっています)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"MaxDisconnectionTime"=dword:000dbba0
"MaxIdleTime"=dword:04ef6d80

 

・MaxDisconnectionTime
RDPのセッションが切れてから、自動ログオフする時間(msec)
(切断されたセッションの制限時間を設定する)

・MaxIdleTime
無操作になってから、自動ログオフする時間(msec)
(アクティブでアイドル状態になっているリモート デスクトップ サービス セッションの制限時間を設定する)

 

設定を解除するには、MaxDisconnectionTime、MaxIdleTime を削除します。

 

こんな PowerShell 書いておくと便利かもです

< SetRDTimeOut.ps1 >

param ( [String]$Switch )

$Num = $null

# 照会の時
if( $Switch -match "Sh" ){
    $Mode = "Show"
}
# 引数があったとき
elseif( $Switch -ne "" ){
    $Mode = "Update"
    $Num = $Switch -as [int]

    if( $Num -ne $null ){
        $Timer = $Num * 60000
    }
    # 数値以外の時
    else{
        echo "input `"Show`" or Numeric(min)"
        exit
    }
}
# 引数がなかった時
else{
    echo "input `"Show`" or Numeric(min)"
    exit
}

$RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"
$RegKey = "MaxDisconnectionTime"

# キーの有無確認( Read系なので Try でトラップできない orz)
$SetedTimeer = Get-ItemProperty $RegPath -name $RegKey

# キーがなかった時
if( -not $? ){
    # 照会の時はキーなし
    if( $Mode -eq "Show" ){
        echo "Key not found"
    }
    else{
        # 削除の時は処理不要
        if( $Timer -eq 0 ){
            echo "Not need Remove"
        }
        # 更新
        else{
            # キーを追加する
            New-ItemProperty $RegPath -name $RegKey -PropertyType DWord -Value $Timer
            echo "Set time out is $Switch min"
        }
    }
}
# キーがあったとき
else{
    # 照会の時
    if( $Mode -eq "Show" ){
        # 設定されていたタイマー表示
        $h = $SetedTimeer.MaxDisconnectionTime / 60000
        echo "Time out is $h min"
    }
    # 更新の時
    else{
        # 削除
        if( $Timer -eq 0 ){
            Remove-ItemProperty $RegPath -name $RegKey
            echo "Removeed"
        }
        # 更新
        else{
            # キーを更新する
            Set-ItemProperty $RegPath -name $RegKey -Value $Timer
            echo "Set time out is $Switch min"
        }
    }
}

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.