The DriveGetDrive command returned all drives (option "ALL") for years now and my program could always rely on that function. Suddenly a drive letter that was created with the subst command does not appear in the list of drives anymore. And it clearly did, because I used to react to a certain subst command by reacting to new or revoked (subst /D) drive letters.
Why is that? I think this a bug because there's no way left to list ALL drive letters anymore.
And why should I use an API command for that when this was already built in for years?

I'm making a program that has a combo control in a gui and back in win7 when the window was focused the scroll wheel could be used to scroll through it's contents, now i'm using win10 and i have to put the mouse on that control to scroll up and down.
Since now the scroll wheel works depending on where the mouse is, is there a way to make it no matter where on the gui the pointer is?
Also if the only way to do it is some complex hotkey functions will it work with pressing space to toggle a checkbox?
If you need to see what i have so far let me know and i'll copy it here.

Hello,
In Windows 10 PowerShell, one can do this to change the metric for a NIC in Windows 10:
Get-NetAdapter | Where-Object -FilterScript {$_.InterfaceAlias -Eq "Ethernet 2"} | Set-NetIPInterface -InterfaceMetric 2
I know I can script the above PowerShell line (and it works!), but I wanted to try something I hadn't done before after looking into jguinch's most excellent Network configuration UDF. I wanted to make use of the SetIPConnectionMetric method in the WMI classes. There is an example VBscript here but this is not for Windows 10. Using AutoIT would also give better control over capturing error return codes than with PowerShell.
But I cannot get my script to work! The return from SetIPConnectionMetric() is 0, which would indicate success. Yet the change does not happen. I also tried WMI methods using .put_ but this fails.
Anyone more experienced than I have ideas to make this work?
#RequireAdmin
_SetNicInterfaceMetric2("Ethernet 2", "2")
Func _SetNicInterfaceMetric2($NIC_NAME, $METRIC)
Local $s_setIndx = 0
$objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2")
$colNICItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = '" & $NIC_NAME & "'", "WQL")
If IsObj($colNICItems) Then
For $objItem In $colNICItems
$s_nicIndex = $objItem.Index
Next
ConsoleWrite("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index = '" & $s_nicIndex & "'" & @CRLF)
$colNAC = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index = '" & $s_nicIndex & "'", "WQL")
If IsObj($colNAC) Then
For $objNetCard In $colNAC
If $METRIC <> $objNetCard.IPConnectionMetric Then
ConsoleWrite("Metric was set to " & $objNetCard.IPConnectionMetric & ". Setting to " & $METRIC & "." & @CRLF)
$s_isSet = $objNetCard.SetIPConnectionMetric($METRIC)
ConsoleWrite("SetIPConnectionMetric Result = " & $s_isSet & @CRLF)
Else
ConsoleWrite("Metric is already set to " & $METRIC & @CRLF)
EndIf
Next
EndIf
EndIf
EndFunc ;==>_SetNicInterfaceMetric2