none
Device Driver Install UAC Prompt After User First Logon RRS feed

  • Question

  • Afternoon All....

    So the situation is this... We successfully deploy our captured image of W7 Entperise through our Task sequence which does the usual - installs system specific drivers, core applications, renames the local admin acocunt and joins the system to the domain.. When the user logs onto the system for first time they presnted with a prompt to install the audio  device driver, UAC kicks and they are unable install, thus being presented with this at each logon.

    I have confirmed that the offending device driver is in the driver package associated to the system..

    has anyone-else come across this, if so how did you resolve.

    Thanks in advance

    Richard. .

    Wednesday, March 14, 2012 4:48 PM

Answers

  • We hit the same issue with a number of drivers and resolved it by running a vbscript which searches through the registry for ConfigFlags values set to 0x00020000 or 0x0001000 and resets them to 0.

    It means we just run this one action and it deals with any drivers (now or in the future) that cause this issue.  I have pasted the script below, it is based on the MDT framework so uses ztiutility.vbs.  If you don't use the MDT integration with ConfigMgr then you can edit the script to create your own .vbs.

    Hope it helps.

    Mark.

    <job id="IncludeExample">
     <script language="VBScript" src="ZTIUtility.vbs"/>
     <script language="VBScript">
    ' //***************************************************************************
    ' // ***** Script Header *****
    ' //
    ' // File:      ZTIResetConfigFlags.wsf
    ' //
    ' // Purpose:   Search for driver ConfligFlag values containing 0x00020000 or 0x0001000 and reset to 0
    ' //            Prevents UAC prompt at first logon for standard users
    ' //
    ' // Usage:     cscript ZTIResetConfigFlags.wsf
    ' // 
    ' //  
    ' // ***** End Header *****
    ' //***************************************************************************
    
    '//----------------------------------------------------------------------------
    '//
    '//  Global constant and variable declarations
    '//
    '//----------------------------------------------------------------------------
    
    Dim iRetVal
    
    '//----------------------------------------------------------------------------
    '//  End declarations
    '//----------------------------------------------------------------------------
    
    
    '//----------------------------------------------------------------------------
    '//  Main routine
    '//----------------------------------------------------------------------------
    
    On Error Resume Next
    iRetVal = ZTIProcess
    ProcessResults iRetVal
    On Error Goto 0
    
    
    '//---------------------------------------------------------------------------
    '//
    '//  Function: ZTIProcess()
    '//
    '//  Input: None
    '// 
    '//  Return: Success - 0
    '//  Failure - non-zero
    '//
    '//  Purpose: Perform main ZTI processing
    '//  
    '//---------------------------------------------------------------------------
    Function ZTIProcess()
    
    Dim strOriginalKeyPath
    
    strOriginalKeyPath = "SYSTEM\CurrentControlSet\Enum"
    
    FindKeyValue(strOriginalKeyPath)
    
    iRetVal = Success
    
    ZTIProcess = iRetVal
    
    End Function
    
    Function FindKeyValue(strKeyPath)
    
    Dim strComputer
    Dim arrSubKeys
    Dim errorCheck
    Dim strNewKeyPath
    Dim arrValueNames
    Dim strValueName
    Dim oReg
    Dim subKey
    Dim dwValue
    Dim arrValueTypes
    Dim i
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    const REG_SZ = 1
    const REG_EXPAND_SZ = 2
    const REG_BINARY = 3
    const REG_DWORD = 4
    const REG_MULTI_SZ = 7
    
    strComputer = "."
    
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
    errorCheck = oReg.EnumKey(HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys)
    
    If (errorCheck=0 and IsArray(arrSubKeys)) then
     For Each subkey In arrSubKeys
      strNewKeyPath = strKeyPath & "\" & subkey
      FindKeyValue(strNewKeyPath)
     Next
    End If
    
    oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
    
    If (errorCheck=0 and IsArray(arrValueNames)) then
     For i=0 To UBound(arrValueNames)
      if arrValueNames(i) = "ConfigFlags" then
       strValueName = arrValueNames(i)
       oReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
       If dwValue = 131072 or dwvalue = 65536 then
        oLogging.CreateEntry "Found ConfigFlags with value of 0x00020000 or 0x00010000 at: " & strKeyPath, LogTypeInfo
        oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, 0
        oLogging.CreateEntry "Changed " & strKeyPath & "\" & strValueName & " to 0.", LogTypeInfo
       End If   
       
      end if
     Next
    End if
    
    End Function
    
     </script>
    </job>


    • Edited by Mark_Thomas Friday, March 23, 2012 11:04 AM
    • Marked as answer by Yog Li Wednesday, April 4, 2012 6:25 AM
    Friday, March 23, 2012 11:03 AM
  • Hi,

    It has been a known issue with for instance Nvidia drivers, check out this thread at Dell techCenter:http://en.community.dell.com/techcenter/enterprise-client/f/4448/t/19415109.aspx

    Regards,
    Jörgen


    -- My System Center blog ccmexec.com -- Twitter @ccmexec

    • Marked as answer by Yog Li Wednesday, April 4, 2012 6:25 AM
    Wednesday, March 14, 2012 6:09 PM
    Moderator

All replies

  • Hi,

    It has been a known issue with for instance Nvidia drivers, check out this thread at Dell techCenter:http://en.community.dell.com/techcenter/enterprise-client/f/4448/t/19415109.aspx

    Regards,
    Jörgen


    -- My System Center blog ccmexec.com -- Twitter @ccmexec

    • Marked as answer by Yog Li Wednesday, April 4, 2012 6:25 AM
    Wednesday, March 14, 2012 6:09 PM
    Moderator
  • We experienced the same thing with an ATI driver. We had to upgrade to this driver so that ie9 GPU rendering would work without killing tabs. A workaround was just to have the technician that is building the machine authenticate to the UAC prompt. It only happens one per system not per user.
    Thursday, March 15, 2012 3:38 PM
  • Hi Guy's thanks for your responses... I'm going to try the "Bad Driver" Installation method instead of the Driver Package... I will post my findings..

    Thanks again.


    Richard.

    Friday, March 23, 2012 9:12 AM
  • We hit the same issue with a number of drivers and resolved it by running a vbscript which searches through the registry for ConfigFlags values set to 0x00020000 or 0x0001000 and resets them to 0.

    It means we just run this one action and it deals with any drivers (now or in the future) that cause this issue.  I have pasted the script below, it is based on the MDT framework so uses ztiutility.vbs.  If you don't use the MDT integration with ConfigMgr then you can edit the script to create your own .vbs.

    Hope it helps.

    Mark.

    <job id="IncludeExample">
     <script language="VBScript" src="ZTIUtility.vbs"/>
     <script language="VBScript">
    ' //***************************************************************************
    ' // ***** Script Header *****
    ' //
    ' // File:      ZTIResetConfigFlags.wsf
    ' //
    ' // Purpose:   Search for driver ConfligFlag values containing 0x00020000 or 0x0001000 and reset to 0
    ' //            Prevents UAC prompt at first logon for standard users
    ' //
    ' // Usage:     cscript ZTIResetConfigFlags.wsf
    ' // 
    ' //  
    ' // ***** End Header *****
    ' //***************************************************************************
    
    '//----------------------------------------------------------------------------
    '//
    '//  Global constant and variable declarations
    '//
    '//----------------------------------------------------------------------------
    
    Dim iRetVal
    
    '//----------------------------------------------------------------------------
    '//  End declarations
    '//----------------------------------------------------------------------------
    
    
    '//----------------------------------------------------------------------------
    '//  Main routine
    '//----------------------------------------------------------------------------
    
    On Error Resume Next
    iRetVal = ZTIProcess
    ProcessResults iRetVal
    On Error Goto 0
    
    
    '//---------------------------------------------------------------------------
    '//
    '//  Function: ZTIProcess()
    '//
    '//  Input: None
    '// 
    '//  Return: Success - 0
    '//  Failure - non-zero
    '//
    '//  Purpose: Perform main ZTI processing
    '//  
    '//---------------------------------------------------------------------------
    Function ZTIProcess()
    
    Dim strOriginalKeyPath
    
    strOriginalKeyPath = "SYSTEM\CurrentControlSet\Enum"
    
    FindKeyValue(strOriginalKeyPath)
    
    iRetVal = Success
    
    ZTIProcess = iRetVal
    
    End Function
    
    Function FindKeyValue(strKeyPath)
    
    Dim strComputer
    Dim arrSubKeys
    Dim errorCheck
    Dim strNewKeyPath
    Dim arrValueNames
    Dim strValueName
    Dim oReg
    Dim subKey
    Dim dwValue
    Dim arrValueTypes
    Dim i
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    const REG_SZ = 1
    const REG_EXPAND_SZ = 2
    const REG_BINARY = 3
    const REG_DWORD = 4
    const REG_MULTI_SZ = 7
    
    strComputer = "."
    
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
    errorCheck = oReg.EnumKey(HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys)
    
    If (errorCheck=0 and IsArray(arrSubKeys)) then
     For Each subkey In arrSubKeys
      strNewKeyPath = strKeyPath & "\" & subkey
      FindKeyValue(strNewKeyPath)
     Next
    End If
    
    oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
    
    If (errorCheck=0 and IsArray(arrValueNames)) then
     For i=0 To UBound(arrValueNames)
      if arrValueNames(i) = "ConfigFlags" then
       strValueName = arrValueNames(i)
       oReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
       If dwValue = 131072 or dwvalue = 65536 then
        oLogging.CreateEntry "Found ConfigFlags with value of 0x00020000 or 0x00010000 at: " & strKeyPath, LogTypeInfo
        oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, 0
        oLogging.CreateEntry "Changed " & strKeyPath & "\" & strValueName & " to 0.", LogTypeInfo
       End If   
       
      end if
     Next
    End if
    
    End Function
    
     </script>
    </job>


    • Edited by Mark_Thomas Friday, March 23, 2012 11:04 AM
    • Marked as answer by Yog Li Wednesday, April 4, 2012 6:25 AM
    Friday, March 23, 2012 11:03 AM
  • Apologies for the slow feedback!!

    Mark, the Script worked a treat!! Thank-you so much for sharing!

    Problem resolved.

    Regards,

    Richard.  

    Monday, April 30, 2012 10:32 AM
  • Hey Mark/Richard,

    How should I setup the step in my task sequence to get this working?  I dont have MDT integrated with SCCM OSD by the way.  Would I copy the above script, save to a .wsf file and call that?  When I use MDT I do not get this prompte but if I use OSD to build a machine with the exact same .wim I do get the prompt when the first user logs in.

    Thanks,

    Dexter

    Wednesday, June 27, 2012 8:34 PM