Jump to content

Fingerprint Reader Script Problem


Recommended Posts

I am using Protector Suite QL on an IBM T61p laptop. I don't like the IBM default reader software. When I dock the laptop, the software does not recognize the external fingerprint reader. I have found that if I open device manager, disable the 1st biometric device (internal one) then the 2nd device (external reader) works. I have compiled the scripts into .exe files so I can run them easily (I am new to Autoit and programming).

I want to know how to run these scripts upon the docking and undocking of the laptop (if possible).

the script below allows for me to enable the internal fingerprint reader. I have one that also disables it.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_outfile=..\..\..\Users\Owner\Desktop\Enable Fingerprint Reader.exe

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

;enable internal fingerprint reader

if not WinExists("Device Manager") Then

run(@comspec & ' /c ' & @SystemDir & "\devmgmt.msc", @SystemDir, @sw_hide)

Sleep(3000)

Send("{TAB}")

Send("{b 2}")

Send("{RIGHT}")

Send("{Alt}")

Send("{a}")

Send("{DOWN}")

Send("{ENTER}")

EndIf

Winclose("Device Manager")

Link to comment
Share on other sites

I am using Protector Suite QL on an IBM T61p laptop. I don't like the IBM default reader software. When I dock the laptop, the software does not recognize the external fingerprint reader. I have found that if I open device manager, disable the 1st biometric device (internal one) then the 2nd device (external reader) works. I have compiled the scripts into .exe files so I can run them easily (I am new to Autoit and programming).

I want to know how to run these scripts upon the docking and undocking of the laptop (if possible).

the script below allows for me to enable the internal fingerprint reader. I have one that also disables it.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_outfile=..\..\..\Users\Owner\Desktop\Enable Fingerprint Reader.exe

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

;enable internal fingerprint reader

if not WinExists("Device Manager") Then

run(@comspec & ' /c ' & @SystemDir & "\devmgmt.msc", @SystemDir, @sw_hide)

Sleep(3000)

Send("{TAB}")

Send("{b 2}")

Send("{RIGHT}")

Send("{Alt}")

Send("{a}")

Send("{DOWN}")

Send("{ENTER}")

EndIf

Winclose("Device Manager")

Offhand, I'd suggest checking to see if the reported "Chassis Type" changes appropriately when switching between a docked and undocked state.

Try the following and see what the returned chassis type is for each state. If it works appropriately for your needs, then I'd suggest just having a small polling process send out a query at whatever intervals you deem best, and run the script(s) you already have to configure your device settings.

Good luck!:

MsgBox(64,"Current Chassis Type",_GetInfoChassisType())

Func _GetInfoChassisType()
;--------------------------------------
;Description:  Retrieves the chassis type for a computer (mini-tower, laptop, etc.).
;--------------------------------------
    ConsoleWrite("------------------------" & @CRLF)
    ConsoleWrite("_GetInfoChassisType(): Retrieves the chassis type for a computer (mini-tower, laptop, etc.)." & @CRLF)
    ConsoleWrite("------------------------" & @CRLF)
    Dim $aChassisTypes[25] = ["24", "Other", "Unknown", "Desktop", "Low Profile Desktop", _
            "Pizza Box", "Mini Tower", "Tower", "Portable", "Laptop", "Notebook", "Hand Held", _
            "Docking Station", "All in One", "Sub Notebook", "Space-Saving", "Lunch Box", _
            "Main System Chassis", "Expansion Chassis", "Sub Chassis", "Bus Expansion Chassis", _
            "Peripheral Chassis", "Storage Chassis", "Rack Mount Chassis", "Sealed-Case PC"]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    
    $colChassis = $objWMIService.ExecQuery("Select * from Win32_SystemEnclosure")
    If IsObj($colChassis) Then
        For $objChassis In $colChassis
            If IsArray($objChassis.ChassisTypes) Then
                For $intType In $objChassis.ChassisTypes
                    Return $aChassisTypes[$intType]
                Next
            EndIf
        Next
    EndIf
EndFunc

- MoChr(77)& Chr(97)& Chr(100)& Chr(101)& Chr(32)& Chr(121)& Chr(97)& Chr(32)& Chr(108)& Chr(111)& Chr(111)& Chr(107)-------I've told you 100,000 times not to exaggerate!-------Don't make me hit you with my cigarette hand...-------My scripts:Random Episode Selector, Keyboard MouseMover, CopyPath v2.1, SmartRename for XP,Window Tracer[sup]New![/sup]

Link to comment
Share on other sites

I am amazed at the number of views and the quick response. I will take your polling solution advice later when I have time and thanks so so so much for helping. I was concerned about resources needed to poll, but it seems like this would not be an issue. That is why I was thinking of a Vista login solution - such as hit the fingerprint reader icon and it would execute the script before asking for the print. Anyway, thanks and I will let you if it works out.

Offhand, I'd suggest checking to see if the reported "Chassis Type" changes appropriately when switching between a docked and undocked state.

Try the following and see what the returned chassis type is for each state. If it works appropriately for your needs, then I'd suggest just having a small polling process send out a query at whatever intervals you deem best, and run the script(s) you already have to configure your device settings.

Good luck!:

MsgBox(64,"Current Chassis Type",_GetInfoChassisType())

Func _GetInfoChassisType()
;--------------------------------------
;Description:  Retrieves the chassis type for a computer (mini-tower, laptop, etc.).
;--------------------------------------
    ConsoleWrite("------------------------" & @CRLF)
    ConsoleWrite("_GetInfoChassisType(): Retrieves the chassis type for a computer (mini-tower, laptop, etc.)." & @CRLF)
    ConsoleWrite("------------------------" & @CRLF)
    Dim $aChassisTypes[25] = ["24", "Other", "Unknown", "Desktop", "Low Profile Desktop", _
            "Pizza Box", "Mini Tower", "Tower", "Portable", "Laptop", "Notebook", "Hand Held", _
            "Docking Station", "All in One", "Sub Notebook", "Space-Saving", "Lunch Box", _
            "Main System Chassis", "Expansion Chassis", "Sub Chassis", "Bus Expansion Chassis", _
            "Peripheral Chassis", "Storage Chassis", "Rack Mount Chassis", "Sealed-Case PC"]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    
    $colChassis = $objWMIService.ExecQuery("Select * from Win32_SystemEnclosure")
    If IsObj($colChassis) Then
        For $objChassis In $colChassis
            If IsArray($objChassis.ChassisTypes) Then
                For $intType In $objChassis.ChassisTypes
                    Return $aChassisTypes[$intType]
                Next
            EndIf
        Next
    EndIf
EndFunc
Link to comment
Share on other sites

I receive chasis type "Notebook" regardless of whether the laptop is docked or not. This level of programming is beyond my capabilities so thanks for the script even though it did not work. Any other suggestions?

I am amazed at the number of views and the quick response. I will take your polling solution advice later when I have time and thanks so so so much for helping. I was concerned about resources needed to poll, but it seems like this would not be an issue. That is why I was thinking of a Vista login solution - such as hit the fingerprint reader icon and it would execute the script before asking for the print. Anyway, thanks and I will let you if it works out.

Link to comment
Share on other sites

I receive chasis type "Notebook" regardless of whether the laptop is docked or not. This level of programming is beyond my capabilities so thanks for the script even though it did not work. Any other suggestions?

I am amazed at the number of views and the quick response. I will take your polling solution advice later when I have time and thanks so so so much for helping. I was concerned about resources needed to poll, but it seems like this would not be an issue. That is why I was thinking of a Vista login solution - such as hit the fingerprint reader icon and it would execute the script before asking for the print. Anyway, thanks and I will let you if it works out.

Link to comment
Share on other sites

Under in system devices" within Device Manager, there is a listing for "Docking Station" that comes on when it is docked. Can I poll this and how?

I receive chasis type "Notebook" regardless of whether the laptop is docked or not. This level of programming is beyond my capabilities so thanks for the script even though it did not work. Any other suggestions?

Link to comment
Share on other sites

I find it odd that the internal reader seems to auto-enable when you dock, or at least I'm assuming so. Maybe use the SC.EXE utility or something to completely disable the onboard one or something.

Do you still have the default software loaded? Is it "stealing" control and re-enabling the onboard reader? Perhaps remove that or prevent it from loading.

It just seems like there's a better solution that coding AutoIt to do a bunch of clicking for you.

My UDFs: ExitCodes

Link to comment
Share on other sites

The software is UPEK Protector Suite QL. Oddly UPEK makes a software for the IBM T61p that works properly for the internal and external fingerprint readers, but it was also created to handle all types of security issues that UPEK later stopped making functional. Thus, the UPEK software that came with the laptop is slow and resource intensive. With the new software, the internal one is the default reader...unless disabled. The new software also does not interfere with my PGP encryption software...the old one did. I found the PNP id: pnp0c15. I will look at SC.EXE.

I find it odd that the internal reader seems to auto-enable when you dock, or at least I'm assuming so. Maybe use the SC.EXE utility or something to completely disable the onboard one or something.

Do you still have the default software loaded? Is it "stealing" control and re-enabling the onboard reader? Perhaps remove that or prevent it from loading.

It just seems like there's a better solution that coding AutoIt to do a bunch of clicking for you.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...