web-dev-qa-db-ja.com

Windows 7のログオン時にパスワードの期限切れの通知がない場合、パスワードの期限切れの通知をどのように構成しますか?

私の理解では、Windows 7ユーザーはログオンプロセス中にパスワードの期限切れ通知を受信しません-これはシステムトレイからのみ発生します。

現在、ユーザーの注意散漫を減らすためにトレイバルーン通知が無効になっています。パスワード変更プロセスは、既存のセッションよりもログオンプロセス中の方がスムーズであると思います。その結果、ユーザーは有効期限が切れたときにパスワードを変更するように求められます。

ユーザーはターミナルサービスボックスにも接続しますが、そこではパスワードの有効期限の事前通知を受け取ります。したがって、Windows 7は通知しませんが、TS/RDSおよびXPボックスは通知します。これを構成するためのガイダンスはありますか?個人的には、すべての有効期限通知をオフにしますが、ほとんどのユーザーが通知を参照してください。考えますか?GPOまたは見落としている可能性のあるその他の設定ですか?以下の対話型ログオン設定は、Win7ワークステーションGPOで既に有効になっています。バルーン通知は、 Windows 7ですが、代替案を知っている人がいるかどうか確認したいと思いました。

コンピューターの構成\ Windowsの設定\セキュリティの設定\ローカルポリシー-セキュリティオプション

対話型ログオン:有効期限が切れる前にパスワードの変更をユーザーに要求する

5
J. L.

これは、完全に賢明な構成選択を行う状況の1つに聞こえます(ユーザーエクスペリエンスを向上させるためにバルーン通知を無効にします)。次に、その決定と矛盾する何かが生じます。その時点で、妥協点を見つけることができます(そして、通常、大きな混乱、または問題の実際のサイズに関連して非常に複雑なものになってしまいます)。または、変更を取り消します。ほとんどの場合、私は学習経験を取り、以前の決定から戻ることが最善だと思います。

tl; drバルーン通知を再度有効にします。

8
Chris Thorpe

これは古い投稿ですが、無期限のパスワードを検出して応答しないようにスクリプトを更新しました。

'==========================================
' Check for password expiring notification
'==========================================
' First, get the domain policy.
'==========================================
Dim oDomain
Dim oUser
Dim maxPwdAge
Dim numDays
Dim warningDays

warningDays = 6

Set LoginInfo = CreateObject("ADSystemInfo")  
Set objUser = GetObject("LDAP://" & LoginInfo.UserName & "")  
strDomainDN = UCase(LoginInfo.DomainDNSName) 
strUserDN = LoginInfo.UserName

'========================================
' Check if password is non-expiring.
'========================================
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
intUserAccountControl = objUser.Get("userAccountControl")
If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then
    'WScript.Echo "The password does not expire."
Else

    Set oDomain = GetObject("LDAP://" & strDomainDN)
    Set maxPwdAge = oDomain.Get("maxPwdAge")

    '========================================
    ' Calculate the number of days that are
    ' held in this value.
    '========================================
    numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _
                    maxPwdAge.LowPart) / CCur(-864000000000)
    'WScript.Echo "Maximum Password Age: " & numDays

    '========================================
    ' Determine the last time that the user
    ' changed his or her password.
    '========================================
    Set oUser = GetObject("LDAP://" & strUserDN)

    '========================================
    ' Add the number of days to the last time
    ' the password was set.
    '========================================
    whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
    fromDate = Date
    daysLeft = DateDiff("d",fromDate,whenPasswordExpires)

    'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged

    if (daysLeft < warningDays) and (daysLeft > -1) then
        Msgbox "Password Expires in " & daysLeft & " day(s)" & " at " & whenPasswordExpires & chr(13) & chr(13) & "Once logged in, press CTRL-ALT-DEL and" & chr(13) & "select the 'Change a password' option", 0, "PASSWORD EXPIRATION WARNING!"
    End if

End if

'========================================
' Clean up.
'========================================
Set oUser = Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing

これは元の答えとスクリプトでした

GPOに入るVBSスクリプトは、パスワードが#日で期限切れになることをユーザーに通知するポップアップウィンドウを表示し、ユーザーは[OK]をクリックして閉じる必要があることを通知します。

GPO-ユーザー設定-ポリシー-管理テンプレート-システム-ログオン-ユーザーログオン時にこれらのプログラムを実行します。また、フォルダの場所をIEスクリプトを実行するかどうかを尋ねるポップアップが表示されないようにする信頼済みサイト。

PwExpChk.vbs

'========================================
' First, get the domain policy.
'========================================
Dim oDomain
Dim oUser
Dim maxPwdAge
Dim numDays
Dim warningDays

warningDays = 6

Set LoginInfo = CreateObject("ADSystemInfo")  
Set objUser = GetObject("LDAP://" & LoginInfo.UserName & "")  
strDomainDN = UCase(LoginInfo.DomainDNSName) 
strUserDN = LoginInfo.UserName


Set oDomain = GetObject("LDAP://" & strDomainDN)
Set maxPwdAge = oDomain.Get("maxPwdAge")

'========================================
' Calculate the number of days that are
' held in this value.
'========================================
numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _
                maxPwdAge.LowPart) / CCur(-864000000000)
'WScript.Echo "Maximum Password Age: " & numDays

'========================================
' Determine the last time that the user
' changed his or her password.
'========================================
Set oUser = GetObject("LDAP://" & strUserDN)

'========================================
' Add the number of days to the last time
' the password was set.
'========================================
whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
fromDate = Date
daysLeft = DateDiff("d",fromDate,whenPasswordExpires)

'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged

if (daysLeft < warningDays) and (daysLeft > -1) then
    Msgbox "Password Expires in " & daysLeft & " day(s)" & " at " & whenPasswordExpires & chr(13) & chr(13) & "Once logged in, press CTRL-ALT-DEL and" & chr(13) & "select the 'Change a password' option", 0, "PASSWORD EXPIRATION WARNING!"
End if

'========================================
' Clean up.
'========================================
Set oUser = Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing
7
MarkK