vernalex Posted November 3, 2015 Posted November 3, 2015 Generally,I have a Win32_EncryptableVolume COM object in AutoIt that takes a parameter on the GetKeyProtectors method of a string array that the method needs to write the results into. Is this possible to do? If so, how?More explicitly,I am using WMI to obtain a COM object from Win32_EncryptableVolume (from the \\.\root\cimv2\Security\MicrosoftVolumeEncryption namespace). I end up with a COM object variable. I can access the various Win32_EncryptableVolume properties and methods. This part works great.However, what I really want to use is the GetKeyProtectors method. This takes an int protector type (in my case at the moment I really only want #3 for the 'numeric password') and a string array that it will write the results into. That is, GetKeyProtectors( in int KeyProtectorType = 3, out string VolumeKeyProtectorID[] ) or,$Win32_EncryptableVolume_object.GetKeyProtectors(3, $array_to_receive_data)So, I need to pass in a string array that will receive the results as the second parameter. Is this possible to do? If so, how?I've tried passing in an array and it doesn't receive the data. I've tried using DllCreateStruct unsuccessfully. I found some various websites and forums with information that seems relevant but isn't exactly what I need so they didn't end up working out. At this point I'm flailing so I'm hoping someone here understands.Or if there's another way to discover key protectors then that would be helpful too. I could parse output from manage-bde.exe, but I'd much prefer to do it with COM. My end goal is to obtain the numerical password with the GetKeyProtectorNumericalPassword method, but I need to know the volume's unique protector ID.Thank you for whatever help you can provide and let me know if you need anything else from me.
jdelaney Posted November 4, 2015 Posted November 4, 2015 (edited) Try this:Local $array_to_receive_data $Win32_EncryptableVolume_object.GetKeyProtectors(3, $array_to_receive_data) For $objId in $array_to_receive_data Local $VolumeKeyProtectorFriendlyName $objId.GetKeyProtectorFriendlyName $objId, $VolumeKeyProtectorFriendlyName If $VolumeKeyProtectorFriendlyName <> "" Then ConsoleWrite( "KeyProtectors: " & $VolumeKeyProtectorFriendlyName & @CRLF) End If NextAlso, if you google VBS examples for any given COM object, it's easy to translate into autoit:https://msdn.microsoft.com/en-us/library/windows/desktop/aa376441(v=vs.85).aspx Edited November 4, 2015 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
vernalex Posted November 4, 2015 Author Posted November 4, 2015 Thank you very much. The key element I was missing was "for $item in $array". I was trying to access the array through brackets and that wasn't working. Thank you again.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now