#Include <WinAPI.au3>
Global $DLL = DllOpen("sppc.dll")
UninstallLicenses()
Func UninstallLicenses()
If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform", "Path") = '' Then Return
Local $Handle = SLOpen()
If $Handle Then
Local $pnReturnIds = 0, $ppReturnIds = 0
If Not SLGetSLIDList($Handle, 0, _WinAPI_GUIDFromString("0ff1ce15-a989-479d-af46-f275c6370663"), 6, $pnReturnIds, $ppReturnIds) Then
For $i = 0 To $pnReturnIds - 1
$SPPC = SLUninstallLicense($Handle, $ppReturnIds + 16 * $i)
Next
EndIf
SLClose($Handle)
EndIf
EndFunc ;==>UninstallLicenses
Func SLOpen()
Local $Ret = DllCall($DLL, 'int', 'SLOpen', 'Handle*', 0)
If @error Then Return SetError(@error, 0, -1)
Return SetError(GetLastError(), 0, $Ret[1])
EndFunc ;==>SLOpen
Func SLGetSLIDList($hSLC, $eQueryIdType, $pQueryId, $eReturnIdType, ByRef $pnReturnIds, ByRef $ppReturnIds)
Local $Ret = DllCall($DLL, 'int', 'SLGetSLIDList', 'Handle', $hSLC, 'int', $eQueryIdType, 'struct*', $pQueryId, 'int', $eReturnIdType, 'UINT*', 0, 'ptr*', 0)
If @error Then Return SetError(@error, 0, -1)
$pnReturnIds = $Ret[5]
$ppReturnIds = $Ret[6]
Return SetError(GetLastError(), 0, $Ret[0])
EndFunc ;==>SLGetSLIDList
Func SLUninstallLicense($hSLC, $pLicenseFileId)
Local $Ret = DllCall($DLL, 'int', 'SLUninstallLicense', 'Handle', $hSLC, 'ptr', $pLicenseFileId)
If @error Then Return SetError(@error, 0, -1)
Return SetError(GetLastError(), 0, $Ret[0])
EndFunc ;==>SLUninstallLicense
Func SLClose($hSLC)
Local $Ret = DllCall($DLL, 'int', 'SLClose', 'Handle', $hSLC)
If @error Then Return SetError(@error, 0, -1)
Return SetError(GetLastError(), 0, $Ret[0])
EndFunc ;==>SLClose
Func GetLastError()
Local $Ret = DllCall("kernel32.dll", "dword", "GetLastError")
Return $Ret[0]
EndFunc ;==>GetLastError
|