This is not a Microsoft problem: The reason you need to be admin is that the function MPUSBIsVidPidEqual in the Microchip supplied dll opens the registry with an access mask KEY_ALL_ACCESS in the call to RegOpenKeyEx. Replace KEY_ALL_ACCESS with the more modest access mask KEY_QUERY_VALUE, and recompile. Now you won't need admin rights anymore.