From ad5abad9f1f2cd21f3fe4cfea0b46cb2cc1f2f58 Mon Sep 17 00:00:00 2001 From: "Michael H.G. Schmidt" Date: Thu, 19 Jan 2023 14:31:37 +0100 Subject: [PATCH] Set file extensions after install by script #87 --- optional/install-irfanview.cmd | 94 +++ source/SFTA.pb | 1419 ++++++++++++++++++++++++++++++++ tools/.gitignore | 2 + tools/SFTA.exe | Bin 0 -> 284672 bytes 4 files changed, 1515 insertions(+) create mode 100644 source/SFTA.pb create mode 100644 tools/SFTA.exe diff --git a/optional/install-irfanview.cmd b/optional/install-irfanview.cmd index 89876f2..dfc57fd 100644 --- a/optional/install-irfanview.cmd +++ b/optional/install-irfanview.cmd @@ -27,6 +27,100 @@ move /Y "%PUBLIC%\Desktop\IrfanView*.lnk" %STARTMENU%\IrfanView rem refresh desktop (W10 style) ie4uinit.exe -show +for %%A in ( + + acr + ani + b3d + bmp + dib + clp + crw + cr2 + cr3 + cur + dcm + ima + dcx + dds + djvu + iw44 + dxf + ecw + emf + eps + ps + exr + g3 + gif + hdp + jxr + wdp + heic + ico + iff + lbm + jls + jp2 + jpc + j2k + jpg + jpeg + jpe + jpm + mng + jng + pbm + pcd + pcx + pgm + png + ppm + psd + psp + ras + sun + raw + rle + sff + sgi + rgb + sid + tga + tif + tiff + wbmp + webp + wmf + xbm + xpm + swf + flv + ttf + asf + avi + mpg + mpe + mpeg + mov + wmv + aif + mid + rmi + mp3 + ogg + au + snd + wav + wma + +) do ( + + echo registering file type [ .%%A ] ... + sfta --reg "%TARGET%\i_view64.exe" ".%%A + +) + echo ####### %0 ####### pause diff --git a/source/SFTA.pb b/source/SFTA.pb new file mode 100644 index 0000000..9078aad --- /dev/null +++ b/source/SFTA.pb @@ -0,0 +1,1419 @@ + +; Copyright +; Copyright 2021 Danysys. +; Copyright +; +; Information +; Author(s)......: Danyfirex & Dany3j +; Description....: Set Windows 8/10 File Type Association +; Version........: 1.3.1 +; Information +; +; Resources & Credits +; https://bbs.pediy.com/thread-213954.htm +; LMongrain - Hash Algorithm +; Resources & Credits + + +EnableExplicit + + +#SFTA_VERSION="1.3.1" +Global g_Debug=#False + +#SHCNE_ASSOCCHANGED=$8000000 +#SHCNF_IDLIST=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Hash Algorithm Map +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Structure HashMap + *pUData + Cache.l + Counter.l + Index.l + MD5Bytes1.l + MD5Bytes2.l + OutHash1.l + OutHash2.l + Reckon0.l + Reckon1.l[2] + Reckon2.l[2] + Reckon3.l + Reckon4.l[2] + Reckon5.l[2] + Reckon6.l[2] + Reckon7.l[3] + Reckon8.l + Reckon9.l[3] +EndStructure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Hash Algorithm Map +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Registry Management +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +#CHAR_SIZE = SizeOf(Character) +#KEY_WOW64_64KEY = $0100 +#KEY_WOW64_32KEY = $0200 + +Procedure.s ExpandString(iString.s) + ; Expands environment variables in string + Protected r.s, size.i + + size = ExpandEnvironmentStrings_(iString, 0, 0) + r = Space(size) + ExpandEnvironmentStrings_(iString, @r, size) + ProcedureReturn r +EndProcedure + +Procedure.i RegRoot(iKey.s) + ; Returns the root integer value + ; HKCR, CKCC, HKLM, HKU, HKCC + Protected pos.i, temp.s, r.i + + pos = FindString(iKey, "\") + If Not pos + ProcedureReturn + EndIf + temp = LCase(Left(iKey, pos - 1)) + Select temp + Case "hkcr", "hkey_classes_root" + r = #HKEY_CLASSES_ROOT + Case "hkcu", "hkey_current_user" + r = #HKEY_CURRENT_USER + Case "hklm", "hkey_local_machine" + r = #HKEY_LOCAL_MACHINE + Case "hku", "hkey_users" + r = #HKEY_USERS + Case "hkcc", "hkey_current_config" + r = #HKEY_CURRENT_CONFIG + Default + ProcedureReturn r + EndSelect + ProcedureReturn r +EndProcedure + +Procedure.s RegSub(iKey.s) + ; Returns sub key + Protected r.s, pos.i + + pos = FindString(iKey, "\") + If Not pos + ProcedureReturn + EndIf + r = Mid(iKey, pos + 1) + ProcedureReturn r +EndProcedure + +Procedure.i RegWrite(iKey.s, iName.s, iValue.s, iType.i, iForceBit = 0) + ; Sets registry item to value + ; iForceBit: 32 or 64 returns 32 or 64 bit registry on a 64 bit system + Protected h.i, rootKey.i, subKey.s, v.i, datSize.i, *dat, hex.s, oct.i, i.i + Protected *src, c.c, pos.i + Protected Ret.i + + rootKey = RegRoot(iKey) + subKey = RegSub(iKey) + If iForceBit = 32 + iForceBit = #KEY_WOW64_32KEY + ElseIf iForceBit = 64 + iForceBit = #KEY_WOW64_64KEY + EndIf + If RegCreateKeyEx_(rootKey, subKey, 0, 0, 0, #KEY_WRITE | iForceBit, 0, @h, 0) = #ERROR_SUCCESS + ;If RegOpenKeyEx_(rootKey, subKey, 0, #KEY_WRITE | iForceBit, @h) = #ERROR_SUCCESS + Select iType + Case #REG_SZ, #REG_EXPAND_SZ + Ret=RegSetValueEx_(h, iName, 0, iType, @iValue, StringByteLength(iValue)) + Case #REG_DWORD + v = Val(iValue) + Ret=RegSetValueEx_(h, iName, 0, iType, @v, 4) + Case #REG_QWORD + v = Val(iValue) + Ret=RegSetValueEx_(h, iName, 0, iType, @v, 8) + Case #REG_BINARY + datSize = Len(iValue) / 2 + If datSize + *dat = AllocateMemory(datSize) + For i = 0 To datSize - 1 + hex = "$" + Mid(iValue, (i * 2) + 1, 2) + oct = Val(hex) + PokeB(*dat + i, oct) + Next + Ret=RegSetValueEx_(h, iName, 0, iType, *dat, datSize) + FreeMemory(*dat) + Else + Ret=RegSetValueEx_(h, iName, 0, iType, #NUL, 0) ;Allow Binary Key with Empty Value + EndIf + Case #REG_NONE + RegSetValueEx_(h, iName, 0, iType, #NUL, 0) ;Allow None + Case #REG_MULTI_SZ + datSize = StringByteLength(iValue) + #CHAR_SIZE + *dat = AllocateMemory(datSize) + *src = @iValue + For i = 0 To (datSize - #CHAR_SIZE) Step #CHAR_SIZE + c = PeekC(*src + i) + If c <> #LF + If c = #CR + PokeC(*dat + pos, 0) + Else + PokeC(*dat + pos, c) + EndIf + pos + #CHAR_SIZE + EndIf + Next + PokeC(*dat + pos, 0) + Ret=RegSetValueEx_(h, iName, 0, iType, *dat, pos) + FreeMemory(*dat) + EndSelect + RegCloseKey_(h) + EndIf + ProcedureReturn Ret +EndProcedure + +Procedure.s RegRead(iKey.s, iValue.s, iForceBit = 0) + ; Returns registry value + Protected h.i, rootKey.i, subkey.s, type.i, *dat, datSize.i + Protected temp.s, pos.i, size.i, i.i, b.i, c.c, r.s = "" + + rootKey = RegRoot(iKey) + subKey = RegSub(iKey) + If iForceBit = 32 + iForceBit = #KEY_WOW64_32KEY + ElseIf iForceBit = 64 + iForceBit = #KEY_WOW64_64KEY + EndIf + If RegOpenKeyEx_(rootKey, subKey, 0, #KEY_READ | iForceBit, @h) = #ERROR_SUCCESS + If RegQueryValueEx_(h, iValue, 0, @type, 0, @datSize) = #ERROR_SUCCESS + ;Debug datSize + If datSize = 0 + ProcedureReturn r + EndIf + *dat = AllocateMemory(datSize) + RegQueryValueEx_(h, iValue, 0, @type, *dat, @datSize) + Select type + Case #REG_SZ + r = PeekS(*dat) + ;Debug StringByteLength(r) + #CHAR_SIZE + Case #REG_EXPAND_SZ + r = PeekS(*dat) + r = ExpandString(r) + Case #REG_DWORD + r = Str(PeekL(*dat)) + Case #REG_QWORD + r = Str(PeekQ(*dat)) + Case #REG_BINARY + For i = 0 To datSize - 1 + b = PeekB(*dat + i) & $FF ;make unsigned + r + RSet(Hex(b), 2, "0") + Next + Case #REG_MULTI_SZ + ;charLength = (datSize - #CHAR_SIZE) / #CHAR_SIZE + pos = 0 + For i = 0 To (datSize - #CHAR_SIZE) Step #CHAR_SIZE + c = PeekC(*dat + i) + If c = 0 + If r <> "" + r + #CRLF$ + EndIf + temp = PeekS(*dat + pos, (i - pos)) + r + temp + pos = i + #CHAR_SIZE + EndIf + Next + EndSelect + FreeMemory(*dat) + EndIf + RegCloseKey_(h) + EndIf + ProcedureReturn r +EndProcedure + +;Original from jaPBe IncludesPack _ change for PB4 by ts-soft +Procedure Reg_SetValue(topKey, sKeyName.s, sValueName.s, vValue.s, lType, ComputerName.s = "") + Protected lpData.s=Space(255) + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l, lpcbData, lValue.l, ergebnis.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + lpcbData = 255 + + Select lType + Case #REG_SZ + GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_SZ, @vValue, Len(vValue) + 1) + Case #REG_DWORD + lValue = Val(vValue) + GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_DWORD, @lValue, 4) + EndSelect + + RegCloseKey_(hKey) + ergebnis = 1 + ProcedureReturn ergebnis + Else + MessageRequester("Fehler", "Ein Fehler ist aufgetreten", 0) + RegCloseKey_(hKey) + ergebnis = 0 + ProcedureReturn ergebnis + EndIf +EndProcedure + +Procedure.s Reg_GetValue(topKey, sKeyName.s, sValueName.s, ComputerName.s = "") + Protected lpData.s=Space(255), GetValue.s + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l, lpcbData.l, lType.l, lpType.l + Protected lpDataDWORD.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + lpcbData = 255 + + + GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData) + + If GetHandle = #ERROR_SUCCESS + Select lType + Case #REG_SZ + GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData) + + If GetHandle = 0 + GetValue = Left(lpData, lpcbData - 1) + Else + GetValue = "" + EndIf + + Case #REG_DWORD + GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData) + + If GetHandle = 0 + GetValue = Str(lpDataDWORD) + Else + GetValue = "0" + EndIf + + EndSelect + EndIf + EndIf + RegCloseKey_(hKey) + ProcedureReturn GetValue +EndProcedure + +Procedure.s Reg_ListSubKey(topKey, sKeyName.s, Index, ComputerName.s = "") + Protected lpName.s=Space(255), ListSubKey.s + Protected lpftLastWriteTime.FILETIME + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l + Protected lpcbName.l = 255 + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + + GetHandle = RegEnumKeyEx_(hKey, Index, @lpName, @lpcbName, 0, 0, 0, @lpftLastWriteTime) + + If GetHandle = #ERROR_SUCCESS + ListSubKey.s = Left(lpName, lpcbName) + Else + ListSubKey.s = "" + EndIf + EndIf + RegCloseKey_(hKey) + ProcedureReturn ListSubKey +EndProcedure + +Procedure Reg_DeleteValue(topKey, sKeyName.s, sValueName.s, ComputerName.s = "") + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l, DeleteValue.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + GetHandle = RegDeleteValue_(hKey, @sValueName) + If GetHandle = #ERROR_SUCCESS + DeleteValue = #True + Else + DeleteValue = #False + EndIf + EndIf + RegCloseKey_(hKey) + ProcedureReturn DeleteValue +EndProcedure + +Procedure Reg_CreateKey(topKey, sKeyName.s, ComputerName.s = "") + Protected lpSecurityAttributes.SECURITY_ATTRIBUTES + Protected GetHandle.l, hNewKey.l, lReturnCode.l, lhRemoteRegistry.l, CreateKey.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegCreateKeyEx_(topKey, sKeyName, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, @lpSecurityAttributes, @hNewKey, @GetHandle) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegCreateKeyEx_(lhRemoteRegistry, sKeyName, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, @lpSecurityAttributes, @hNewKey, @GetHandle) + EndIf + + If GetHandle = #ERROR_SUCCESS + GetHandle = RegCloseKey_(hNewKey) + CreateKey = #True + Else + CreateKey = #False + EndIf + ProcedureReturn CreateKey +EndProcedure + +Procedure Reg_DeleteKey(topKey, sKeyName.s, ComputerName.s = "") + Protected GetHandle.l, lReturnCode.l, lhRemoteRegistry.l, DeleteKey.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegDeleteKey_(topKey, @sKeyName) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegDeleteKey_(lhRemoteRegistry, @sKeyName) + EndIf + + If GetHandle = #ERROR_SUCCESS + DeleteKey = #True + Else + DeleteKey = #False + EndIf + ProcedureReturn DeleteKey +EndProcedure + +Procedure.s Reg_ListSubValue(topKey, sKeyName.s, Index, ComputerName.s = "") + Protected lpName.s=Space(255), ListSubValue.s + Protected lpftLastWriteTime.FILETIME + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l + Protected lpcbName.l = 255 + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + + GetHandle = RegEnumValue_(hKey, Index, @lpName, @lpcbName, 0, 0, 0, 0) + + If GetHandle = #ERROR_SUCCESS + ListSubValue = Left(lpName, lpcbName) + Else + ListSubValue = "" + EndIf + RegCloseKey_(hKey) + EndIf + ProcedureReturn ListSubValue +EndProcedure + +Procedure Reg_KeyExists(topKey, sKeyName.s, ComputerName.s = "") + Protected GetHandle.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l, KeyExists.l + + If Left(sKeyName, 1) = "\" + sKeyName = Right(sKeyName, Len(sKeyName) - 1) + EndIf + + If ComputerName = "" + GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + Else + lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) + GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey) + EndIf + + If GetHandle = #ERROR_SUCCESS + KeyExists = #True + Else + KeyExists = #False + EndIf + ProcedureReturn KeyExists +EndProcedure + +Procedure Reg_DeleteKeyWithAllSub(topKey, sKeyName.s, ComputerName.s = "") + Protected i.l + Protected a$, b$ + Repeat + b$ = a$ + a$ = Reg_ListSubKey(topKey,sKeyName,0,"") + If a$ <> "" + Reg_DeleteKeyWithAllSub(topKey,sKeyName+"\"+a$,"") + EndIf + Until a$ = b$ + Reg_DeleteKey(topKey, sKeyName, ComputerName) +EndProcedure + +Procedure Reg_CreateKeyValue(topKey, sKeyName.s, sValueName.s, vValue.s, lType, ComputerName.s = "") + Reg_CreateKey(topKey,sKeyName,ComputerName) + ProcedureReturn Reg_SetValue(topKey,sKeyName,sValueName,vValue,lType,ComputerName) +EndProcedure + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Registry Management +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Debug Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure EnableDisableDebug() + Protected iNumberOfParameters.i = CountProgramParameters() + Protected i + g_Debug=#False + For i=0 To iNumberOfParameters.i-1 + If ProgramParameter(i)="-d" Or ProgramParameter(i)="--debug" + g_Debug=#True + Break + EndIf + Next +EndProcedure + +Procedure DebugPrint(Message.s) + If g_Debug + PrintN(FormatDate("[%yyyy.%mm.%dd %hh:%ii:%ss] ", Date()) + Message.s) + EndIf +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Debug Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;OS Information Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure.s GetWindowsOS() + Protected WindowsOs.s="" + DebugPrint("OSVersion = " + Str(OSVersion())) + Select OSVersion() + Case #PB_OS_Windows_XP + WindowsOs.s="Windows XP" + Case #PB_OS_Windows_Server_2003 + WindowsOs.s="Windows Server 2003" + Case #PB_OS_Windows_Vista + WindowsOs.s="Windows Vista" + Case #PB_OS_Windows_Server_2008 + WindowsOs.s="Windows Server 2008" + Case #PB_OS_Windows_7 + WindowsOs.s="Windows 7" + Case #PB_OS_Windows_Server_2008_R2 + WindowsOs.s="Windows Server 2008 R2" + Case #PB_OS_Windows_8 + WindowsOs.s="Windows 8" + Case #PB_OS_Windows_Server_2012 + WindowsOs.s="Windows Server 2012" + Case #PB_OS_Windows_8_1 + WindowsOs.s="Windows 8 1" + Case #PB_OS_Windows_Server_2012_R2 + WindowsOs.s="Windows Server 2012 R2" + Case #PB_OS_Windows_10 + WindowsOs.s="Windows 10" + Default + WindowsOs.s="Unkown" + EndSelect + ProcedureReturn WindowsOs.s +EndProcedure + +Procedure.s GetWindowsReleaseID() + ProcedureReturn RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId") +EndProcedure + +Procedure.s GetWindowsProductName() + ProcedureReturn RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName") +EndProcedure + +Procedure.s GetWindowsBuild() + ProcedureReturn RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild") +EndProcedure + +Procedure.i IsWindows8_1() + ProcedureReturn Bool(OSVersion()=#PB_OS_Windows_8_1) +EndProcedure + +Procedure.i IsWindows10() + ProcedureReturn Bool(OSVersion()=#PB_OS_Windows_10) +EndProcedure + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;OS Information Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Utils Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure.s QuoteString(String.s) + ProcedureReturn Chr(34) + String.s + Chr(34) +EndProcedure + +Procedure.i FileExist(FilePath.s) + Protected Result.q = FileSize(FilePath.s) + Protected Extension.s = GetExtensionPart(FilePath.s) + ProcedureReturn Bool(Result.q>0 And Extension.s="exe") +EndProcedure + +Procedure.s CreateApplicationID(FilePath.s,FileExt.s) + Protected ApplicationID.s="" + If Not FileExist(FilePath.s) + DebugPrint("ERROR Unable to find " + QuoteString(FilePath.s)) + PrintN("Error File not Found " + QuoteString(FilePath.s)) + ProcedureReturn ApplicationID.s + EndIf + Protected ApplicationName.s=ReplaceString(GetFilePart(FilePath.s,#PB_FileSystem_NoExtension)," ","") + ApplicationID.s="SFTA." + ApplicationName.s + FileExt.s + ProcedureReturn ApplicationID.s +EndProcedure + +Procedure.i RunWait(FilePath.s,Parameter.s="",CurrentDir.s="",Flag.i=#PB_Program_Open | #PB_Program_Wait) + Protected Program=RunProgram(FilePath.s,Parameter.s,CurrentDir.s,Flag.i) + Protected ExitCode=ProgramExitCode(Program) + ProcedureReturn ExitCode +EndProcedure + +Procedure.i RunCmdCommand(Parameter.s="",CurrentDir.s="") + Protected CmdPath.s= GetEnvironmentVariable("ComSpec") + Protected ExitCode=RunWait(CmdPath.s,Parameter.s,CurrentDir.s,#PB_Program_Open | #PB_Program_Wait|#PB_Program_Hide) + ProcedureReturn ExitCode +EndProcedure + +Procedure.i IsAdmin() + ProcedureReturn IsUserAdmin_() +EndProcedure + +Procedure.i IsValidParameter(Parameter.s,ValidParameters.s) + Define.i isValid,k + isValid=0 + For k = 1 To CountString(ValidParameters.s, "|")+1 + If StringField(ValidParameters.s, k, "|")=Parameter.s + isValid=1 + EndIf + Next + ProcedureReturn isValid +EndProcedure + +Procedure CheckValidOS() + If OSVersion()=#PB_OS_Windows_10 Or OSVersion()=#PB_OS_Windows_8_1 + ;Its OK + Else + PrintN("Error. It is not a Windows 8/10 OS") + End 2 + EndIf +EndProcedure + +Procedure.b IsFileType(String.s) + ProcedureReturn Bool(FindString(String.s,".")>0) +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Utils Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Sid Management +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;By Thunder93 +Prototype ConvertSidToStringSid(Sid, *StringSid) +Global Lib_Advapi32=0 +Procedure Advapi32_Init() + + Protected cExt.s + Protected Retr.b + + CompilerIf #PB_Compiler_Unicode : cExt = "W" : CompilerElse : cExt = "A" : CompilerEndIf + + Lib_Advapi32 = OpenLibrary(#PB_Any,"Advapi32.dll") + If Lib_Advapi32 + Global ConvertSidToStringSid.ConvertSidToStringSid = GetFunction(Lib_Advapi32,"ConvertSidToStringSid"+cExt) + Retr = 1 + EndIf + + ProcedureReturn Retr +EndProcedure + +Procedure Advapi32_End() + CloseLibrary(Lib_Advapi32) +EndProcedure + +Procedure.s GetSid(AccountName.s = "") + Protected cbSID.l, lDomainName.s, cbDomainName.l, SIDType.i, SID.s + + If Advapi32_Init() = 0 : Debug "Advapi32_Init failed" : ProcedureReturn "" : EndIf + + If AccountName = "" + Protected lpBuffer.s = Space(#UNLEN+1) + Protected lpnSize.l = #UNLEN+1 + + If GetUserName_(@lpBuffer, @lpnSize) + AccountName = lpBuffer + EndIf + EndIf + + + If Not LookupAccountName_(0, @AccountName, #Null, @cbSID, #Null, @cbDomainName, @SIDType) + If GetLastError_() = #ERROR_INSUFFICIENT_BUFFER + + Protected *ptrSid = AllocateMemory(cbSid) + If Not *ptrSid : Debug "*ptrSid memory allocation failed" : ProcedureReturn "" : EndIf + + lDomainName = Space(cbDomainName) + + If LookupAccountName_(0, @AccountName, *ptrSid, @cbSID, @lDomainName, @cbDomainName, @SIDType) + Protected StringSid.l=0 + If ConvertSidToStringSid(*ptrSid, @StringSid) + FreeMemory(*ptrSid) + + SID = PeekS(StringSid) + LocalFree_(StringSid) + EndIf + + ProcedureReturn SID + EndIf + EndIf + EndIf + + Advapi32_End() +EndProcedure + +Procedure.s GetComputerName() + Protected buffer.s=Space(64), bufsize.l=64 + GetComputerName_(@buffer, @bufsize) + + ProcedureReturn buffer +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Sid Management +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Search User Choice set via Windows User Experience String Shell32 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure.s GetSpecialFolder(iCSIDL) + Protected sPath.s = Space(#MAX_PATH) + If SHGetSpecialFolderPath_(#Null, @sPath, iCSIDL, 0) = #True + ProcedureReturn sPath + Else + ProcedureReturn "" + EndIf +EndProcedure + +Procedure.s GetShell32FilePath() + ProcedureReturn GetSpecialFolder(#CSIDL_SYSTEMX86) + "\Shell32.dll" +EndProcedure + + +Procedure FindStringInMemory(String.s, Memory, MemoryLength) + Protected L = Len(String) + Protected I=0 + For I = 0 To MemoryLength-L + If CompareMemory(@String, Memory+I, L) + ProcedureReturn I + EndIf + Next + ProcedureReturn -1 +EndProcedure + + +Procedure.s GetExperienceString() + #MEMSIZE = 1024 * 1024 * 5 ;Read 5 MB This should be enough to search the Experience String + Protected Shell32Path$=GetShell32FilePath() + Protected sExperienceBase$= "User Choice set via Windows User Experience" + If ReadFile(0, Shell32Path$, #PB_File_SharedRead) + Protected Length.l = #MEMSIZE ;Lof(0) + Protected *MemoryID = AllocateMemory(Length.l) ; allocate the needed memory + If *MemoryID + Protected bytes = ReadData(0, *MemoryID, Length.l) ; read to allocated memory + EndIf + CloseFile(0) + EndIf + Protected Offset.l=FindStringInMemory(sExperienceBase$,*MemoryID,Length.l) + If Offset.l>-1 + DebugPrint("Experience String Found") + ProcedureReturn PeekS(*MemoryID+Offset.l,-1,#PB_Unicode) + Else + ProcedureReturn "" + EndIf +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Search User Choice set via Windows User Experience String Shell32 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Hash Algorithm - by LMongrain +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure Shr32(value.l, count.l = 1) + ; Bitwise Shift Function + ; It will shift the value a number of bits to the right. + ; Bits coming in from left are always 0 + !mov eax, dword [p.v_value] + !mov ecx, dword [p.v_count] + !shr eax, cl + ProcedureReturn +EndProcedure + +Procedure.i Hash1(*pWStr, iHLen.l, *aMD5DigestBytes, *aOutHash) + Protected result = #False + Protected HM1.HashMap + HM1\Cache = 0 + HM1\OutHash1 = 0 + HM1\pUData = *pWStr + HM1\MD5Bytes1 = (PeekL(*aMD5DigestBytes) | 1) + $69FB0000 + HM1\MD5Bytes2 = (PeekL(*aMD5DigestBytes + 4) | 1) + $13DB0000 + HM1\Index = Shr32((iHLen - 2), 1) + HM1\Counter = HM1\Index + 1 + While HM1\Counter + HM1\Reckon0 = PeekL(HM1\pUData) + HM1\OutHash1 + HM1\Reckon1[0] = PeekL(HM1\pUData + 4) + HM1\pUData = HM1\pUData + 8 + HM1\Reckon2[0] = HM1\Reckon0 * HM1\MD5Bytes1 - $10FA9605 * Shr32(HM1\Reckon0, 16) + HM1\Reckon2[1] = $79F8A395 * HM1\Reckon2[0] + $689B6B9F * Shr32(HM1\Reckon2[0], 16) + HM1\Reckon3 = $EA970001 * HM1\Reckon2[1] - $3C101569 * Shr32(HM1\Reckon2[1], 16) + HM1\Reckon4[0] = HM1\Reckon3 + HM1\Reckon1[0] + HM1\Reckon5[0] = HM1\Cache + HM1\Reckon3 + HM1\Reckon6[0] = HM1\Reckon4[0] * HM1\MD5Bytes2 - $3CE8EC25 * Shr32(HM1\Reckon4[0], 16) + HM1\Reckon6[1] = $59C3AF2D * HM1\Reckon6[0] - $2232E0F1 * Shr32(HM1\Reckon6[0], 16) + HM1\OutHash1 = $1EC90001 * HM1\Reckon6[1] + $35BD1EC9 * Shr32(HM1\Reckon6[1], 16) + HM1\OutHash2 = HM1\Reckon5[0] + HM1\OutHash1 + HM1\Cache = HM1\OutHash2 + HM1\Counter = HM1\Counter - 1 + Wend + If (iHLen - 2) - (HM1\Index * 2) = 1 + HM1\Reckon7[0] = PeekL(*pWStr + (8 * HM1\Index + 8)) + HM1\OutHash1 + HM1\Reckon7[1] = HM1\Reckon7[0] * HM1\MD5Bytes1 - $10FA9605 * Shr32(HM1\Reckon7[0], 16) + HM1\Reckon7[2] = $79F8A395 * HM1\Reckon7[1] + $689B6B9F * Shr32(HM1\Reckon7[1], 16) + HM1\Reckon8 = $EA970001 * HM1\Reckon7[2] - $3C101569 * Shr32(HM1\Reckon7[2], 16) + HM1\Reckon9[0] = HM1\Reckon8 * HM1\MD5Bytes2 - $3CE8EC25 * Shr32(HM1\Reckon8, 16) + HM1\Reckon9[1] = $59C3AF2D * HM1\Reckon9[0] - $2232E0F1 * Shr32(HM1\Reckon9[0], 16) + HM1\OutHash1 = $1EC90001 * HM1\Reckon9[1] + $35BD1EC9 * Shr32(HM1\Reckon9[1], 16) + HM1\OutHash2 = HM1\OutHash1 + HM1\Cache + HM1\Reckon8 + EndIf + PokeL(*aOutHash, HM1\OutHash1) + PokeL(*aOutHash + 4, HM1\OutHash2) + result = #True + ProcedureReturn result +EndProcedure + +Procedure.i Hash2(*pWStr, iHLen.l, *aMD5DigestBytes, *aOutHash) + Protected result = #False + Protected HM2.HashMap + HM2\Cache = 0 + HM2\OutHash1 = 0 + HM2\pUData = *pWStr + HM2\MD5Bytes1 = (PeekL(*aMD5DigestBytes) | 1) + HM2\MD5Bytes2 = (PeekL(*aMD5DigestBytes + 4) | 1) + HM2\Index = Shr32((iHLen - 2), 1) + HM2\Counter = HM2\Index + 1 + While HM2\Counter + HM2\Reckon0 = PeekL(HM2\pUData) + HM2\OutHash1 + HM2\pUData = HM2\pUData + 8 + HM2\Reckon1[0] = HM2\Reckon0 * HM2\MD5Bytes1 + HM2\Reckon1[1] = $B1110000 * HM2\Reckon1[0] - $30674EEF * Shr32(HM2\Reckon1[0], 16) + HM2\Reckon2[0] = $5B9F0000 * HM2\Reckon1[1] - $78F7A461 * Shr32(HM2\Reckon1[1], 16) + HM2\Reckon2[1] = $12CEB96D * Shr32(HM2\Reckon2[0], 16) - $46930000 * HM2\Reckon2[0] + HM2\Reckon3 = $1D830000 * HM2\Reckon2[1] + $257E1D83 * Shr32(HM2\Reckon2[1], 16) + HM2\Reckon4[0] = HM2\MD5Bytes2 * (HM2\Reckon3 + PeekL(HM2\pUData - 4)) + HM2\Reckon4[1] = $16F50000 * HM2\Reckon4[0] - ($5D8BE90B * Shr32(HM2\Reckon4[0], 16)) + HM2\Reckon5[0] = $96FF0000 * HM2\Reckon4[1] - $2C7C6901 * Shr32(HM2\Reckon4[1], 16) + HM2\Reckon5[1] = $2B890000 * HM2\Reckon5[0] + $7C932B89 * Shr32(HM2\Reckon5[0], 16) + HM2\OutHash1 = $9F690000 * HM2\Reckon5[1] - $405B6097 * Shr32(HM2\Reckon5[1], 16) + HM2\OutHash2 = HM2\OutHash1 + HM2\Cache + HM2\Reckon3 + HM2\Cache = HM2\OutHash2 + HM2\Counter = HM2\Counter - 1 + Wend + If (iHLen - 2) - (HM2\Index * 2) = 1 + HM2\Reckon6[0] = (PeekL(*pWStr + (8 * HM2\Index + 8)) + HM2\OutHash1) * HM2\MD5Bytes1 + HM2\Reckon6[1] = $B1110000 * HM2\Reckon6[0] - $30674EEF * Shr32(HM2\Reckon6[0], 16) + HM2\Reckon7[0] = $5B9F0000 * HM2\Reckon6[1] - $78F7A461 * Shr32(HM2\Reckon6[1], 16) + HM2\Reckon7[1] = $12CEB96D * Shr32(HM2\Reckon7[0], 16) - $46930000 * HM2\Reckon7[0] + HM2\Reckon8 = $1D830000 * HM2\Reckon7[1] + $257E1D83 * Shr32(HM2\Reckon7[1], 16) + HM2\Reckon9[0] = $16F50000 * HM2\Reckon8 * HM2\MD5Bytes2 - ($5D8BE90B * Shr32(HM2\Reckon8 * HM2\MD5Bytes2, 16)) + HM2\Reckon9[1] = $96FF0000 * HM2\Reckon9[0] - $2C7C6901 * Shr32(HM2\Reckon9[0], 16) + HM2\Reckon9[2] = $2B890000 * HM2\Reckon9[1] + $7C932B89 * Shr32(HM2\Reckon9[1], 16) + HM2\OutHash1 = $9F690000 * HM2\Reckon9[2] - $405B6097 * Shr32(HM2\Reckon9[2], 16) + HM2\OutHash2 = HM2\OutHash1 + HM2\Cache + HM2\Reckon8 + EndIf + PokeL(*aOutHash, HM2\OutHash1) + PokeL(*aOutHash + 4, HM2\OutHash2) + result = #True + ProcedureReturn result +EndProcedure + +Procedure.i GenerateHash(*pWStr, iLen.l, *aMD5DigestBytes, *aOutBytes) + Protected Dim aOutHash.i(3) ; 16 Bytes + Protected *aOutHash = @aOutHash() + Protected iHLen.l = Bool((iLen & 4) < 1) + Shr32(iLen, 2) - 1 + If (iHLen <= 1 Or iHLen & 1 Or + Hash1(*pWStr, iHLen, *aMD5DigestBytes, *aOutHash + 0) = #False Or + Hash2(*pWStr, iHLen, *aMD5DigestBytes, *aOutHash + 8) = #False) + ProcedureReturn #False + EndIf + PokeL(*aOutBytes, PeekL(*aOutHash + 8) ! PeekL(*aOutHash + 0)) + PokeL(*aOutBytes + 4, PeekL(*aOutHash + 12) ! PeekL(*aOutHash + 4)) + ProcedureReturn #True +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Hash Algorithm - by LMongrain +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Create ProgId Hash +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure HexStr2ToByteArray (Array Out.a (1), Hex$) + Protected t$ = "$ " + Protected *c.Character = @Hex$ + Protected pg, p = 1 + Protected out_len = Len(Hex$) : out_len + out_len % 2 : out_len * 0.5 - Bool(out_len) + ReDim Out(out_len) + While *c\c + If p > 2 + Out(pg) = Val(t$) + PokeC(@t$ + SizeOf(Character), 0) + PokeC(@t$ + SizeOf(Character) * 2, 0) + p = 1 + pg + 1 + EndIf + PokeC(@t$ + p * SizeOf(Character), *c\c) + p + 1 + *c + SizeOf(Character) + Wend + Out(pg) = Val(t$) + ProcedureReturn ArraySize(Out()) +EndProcedure + +Procedure.s MD5Digest(sText$, fmt = #PB_Unicode) + Protected iLen.l=(Len(sText$)*2)+2 + ;Debug Len(sText$) + ;Debug iLen + Protected *pWStr=AllocateMemory(iLen) + PokeS(*pWStr,sText$,-1,fmt) + ProcedureReturn Fingerprint(*pWStr,iLen,#PB_Cipher_MD5) +EndProcedure + + +Procedure.s GenerateDate() + Protected User32.l = OpenLibrary(#PB_Any, "user32.dll") + Protected *pFunction = GetFunction(User32.l, "wsprintfW") + + Protected SysTime.SYSTEMTIME + GetSystemTime_(SysTime) + SysTime\wSecond=0 + SysTime\wMilliseconds=0 + + Protected FiTime.FILETIME + SystemTimeToFileTime_(SysTime,FiTime) + + Protected szBuffer$ = Space(16) + Protected szFormat$= "%08x%08x" + + If *pFunction + CallCFunctionFast(*pFunction, @szBuffer$, @szFormat$,FiTime\dwHighDateTime,FiTime\dwLowDateTime) + EndIf + + ProcedureReturn szBuffer$ +EndProcedure + +Procedure.s CreateProgIdHash(sExt$,sProgId$) + UseMD5Fingerprint() + + Protected sUserSid$=GetSid() + Protected sDate$=GenerateDate() + Protected sUserExperience$=GetExperienceString() + + ; Debug sUserSid$ + ; Debug sExt$ + ; Debug sProgId$ + ; Debug sDate$ + + Protected sData$=sExt$ + sUserSid$ + sProgId$ + sDate$ +sUserExperience$ + sData$=LCase(sData$) + ; Debug sData$ + + ;Create MD5 Digest + Protected sMD5Digest$=MD5Digest(sData$) + ;Debug sMD5Digest$ + + Protected Dim aMD5DigestBytes.a(0) + HexStr2ToByteArray(aMD5DigestBytes(), sMD5Digest$) + ;ShowMemoryViewer(aMD5DigestBytes(),16) + + ;Create lpBuffer + Protected iLen.l=(Len(sData$)*2)+2 + Protected *pWStr=AllocateMemory(iLen.l) + PokeS(*pWStr,sData$,-1,#PB_Unicode) + ;ShowMemoryViewer(*pWStr,iLen.l) + + Protected Dim aOutBytes.i(1);8 Bytes + GenerateHash(*pWStr,iLen.l,aMD5DigestBytes(),aOutBytes()) + ;ShowMemoryViewer(aOutBytes(),8) + + ;Debug aOutBytes(0) + ;Debug aOutBytes(1) + ProcedureReturn Base64Encoder(aOutBytes(), 8) +EndProcedure + + +Procedure DeleteProtocolHashRegistryKey(sProtocol$,iForceBit = 0) + Protected sHashKeyParent$="HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\" + sProtocol$ + "\UserChoice" + Protected h.i, rootKey.i, subkey.s + + rootKey = RegRoot(sHashKeyParent$) + subKey = RegSub(sHashKeyParent$) + If iForceBit = 32 + iForceBit = #KEY_WOW64_32KEY + ElseIf iForceBit = 64 + iForceBit = #KEY_WOW64_64KEY + EndIf + If RegOpenKeyEx_(rootKey, subKey, 0, #KEY_READ, @h) = #ERROR_SUCCESS + ProcedureReturn Reg_DeleteKey(rootKey,subKey) + EndIf +EndProcedure + +Procedure DeleteHashRegistryKey(sExt$,iForceBit = 0) + Protected sHashKeyParent$="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice" + Protected h.i, rootKey.i, subkey.s + + rootKey = RegRoot(sHashKeyParent$) + subKey = RegSub(sHashKeyParent$) + If iForceBit = 32 + iForceBit = #KEY_WOW64_32KEY + ElseIf iForceBit = 64 + iForceBit = #KEY_WOW64_64KEY + EndIf + If RegOpenKeyEx_(rootKey, subKey, 0, #KEY_READ, @h) = #ERROR_SUCCESS + ProcedureReturn Reg_DeleteKey(rootKey,subKey) + EndIf +EndProcedure + + +Procedure WriteProtocolProgIdAndHash(sProgId$,sHash$,sProtocol$) + RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\" + sProtocol$ + "\UserChoice","Hash",sHash$,#REG_SZ) + RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\" + sProtocol$ + "\UserChoice","ProgId",sProgId$,#REG_SZ) + Protected sReadHash$=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\" + sProtocol$ + "\UserChoice","Hash") + Protected sReadProgId$= RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\" + sProtocol$ + "\UserChoice","ProgId") + + If (sProgId$=sReadProgId$) And (sHash$=sReadHash$) + DebugPrint("Write Protocol Reg UserChoice OK") + ProcedureReturn #True + Else + DebugPrint("Write Protocol Reg UserChoice FAIL") + ProcedureReturn #False + EndIf +EndProcedure + + +Procedure WriteProgIdAndHash(sProgId$,sHash$,sExt$) + RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice","Hash",sHash$,#REG_SZ) + RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice","ProgId",sProgId$,#REG_SZ) + Protected sReadHash$=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice","Hash") + Protected sReadProgId$= RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice","ProgId") + + If (sProgId$=sReadProgId$) And (sHash$=sReadHash$) + DebugPrint("Write Reg UserChoice OK") + ProcedureReturn #True + Else + DebugPrint("Write Reg UserChoice FAIL") + ProcedureReturn #False + EndIf +EndProcedure + +Procedure SetProtocolAssociation(sProtocol$,sProgId$) + Define sProgIdHash$=CreateProgIdHash(sProtocol$,sProgId$ ) + DebugPrint("Hash: " + sProgIdHash$) + If Not DeleteProtocolHashRegistryKey(sProtocol$) + DebugPrint("Unable To Delete Protocol UserChoice") + EndIf + If WriteProtocolProgIdAndHash(sProgId$,sProgIdHash$,sProtocol$) + SHChangeNotify_(#SHCNE_ASSOCCHANGED,#SHCNF_IDLIST,#NUL,#NUL) ;Refresh + ProcedureReturn #True + EndIf + ProcedureReturn #False +EndProcedure + +Procedure SetFileTypeAssociation(sExt$,sProgId$) + Define sProgIdHash$=CreateProgIdHash(sExt$,sProgId$ ) + DebugPrint("Hash: " + sProgIdHash$) + If Not DeleteHashRegistryKey(sExt$) + DebugPrint("Unable To Delete UserChoice") + EndIf + If WriteProgIdAndHash(sProgId$,sProgIdHash$,sExt$) + SHChangeNotify_(#SHCNE_ASSOCCHANGED,#SHCNF_IDLIST,#NUL,#NUL) ;Refresh + ProcedureReturn #True + EndIf + ProcedureReturn #False +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Create ProgId Hash +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;SFTA Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure PrintHelp() + PrintN("##################################") + PrintN("## __ ##") + PrintN("## | \ _ _ _ _ ##") + PrintN("## |__/ (_| | ) \/ _) \/ _) ##") + PrintN("## / / ##") + PrintN("## © 2020 Danysys.com ##") + PrintN("## SFTA v."+ #SFTA_VERSION +" ##") + PrintN("##################################") + PrintN("") + PrintN("OPTIONS:") + PrintN("") + PrintN("-h, --help Show Help") + PrintN("-l, --list Show All Application Program Id") + PrintN("-g, --get Show Default Application Program Id for an Extension") + PrintN(" Parameters: [.Extension]") + PrintN("-r, --reg Register Application Program Id for an Extension and Set File Type Association") + PrintN(" Parameters: [ApplicationFullPath] [.Extension] [ProgramId-Optional]") + PrintN("-u, --unreg Unregister Application Program Id") + PrintN(" Parameters: [ApplicationFullPath|Program Id] [.Extension]") + PrintN("-i, --icon Set Application Association Icon") + PrintN(" Parameters: [Icon Path]") + PrintN("-d, --debug Show Debug Information") + PrintN("") + PrintN("Usage:") + PrintN("") + PrintN(" Get Current Application Program Id") + PrintN(~" SFTA.exe --get \".txt\"") + PrintN("") + PrintN(" Set File Type Association") + PrintN(~" SFTA.exe \"My.Program.Id\" \".txt\"") + PrintN(~" SFTA.exe \"My.Program.Id\" \".txt\" -i \"shell32.dll,100\"") + PrintN("") + PrintN(" Set Protocol Association") + PrintN(~" SFTA.exe \"My.Program.Id\" \"http\"") + PrintN("") + PrintN(" Register Application + Set File Type Association") + PrintN(~" SFTA.exe --reg \"C:\\SumatraPDF.exe\" \".PDF\"") + PrintN(~" SFTA.exe --reg \"C:\\SumatraPDF.exe\" \".PDF\" \"CustomProgramId\"") + PrintN("") + PrintN(" Register Application + Set Protocol Association") + PrintN(~" SFTA.exe --reg \"C:\\SumatraPDF.exe\" \"http\"") + PrintN("") + PrintN(" Unregister Application") + PrintN(~" SFTA.exe --unreg \"C:\\SumatraPDF.exe\" \".PDF\"") + PrintN(~" SFTA.exe --unreg \"CustomProgramId\" \".PDF\"") + PrintN("") + + +EndProcedure + +Procedure ShowWindowsInformation() + PrintN("Windows Version: " + GetWindowsOS()) + PrintN("Windows ReleaseId: " + GetWindowsReleaseID()) + PrintN("Windows Build: " + GetWindowsBuild()) + PrintN("Windows ProductName: " + GetWindowsProductName()) +EndProcedure + +Procedure.s GetAssocType(sExt$) + Protected ProgId$=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" + sExt$ + "\UserChoice", "ProgId") + PrintN(ProgId$) + End 0 +EndProcedure + +Procedure ListAssocTypeProgIds() + Protected Key$="Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts" + Protected Index.l=1 + Protected SubKey$="" + Protected KeyUserChoice$="" + Protected ProgId$="" + + While 1 + SubKey$ = Reg_ListSubKey(#HKEY_CURRENT_USER, Key$, Index.l) + If SubKey$="" + Break + EndIf + KeyUserChoice$=Key$ + "\" + SubKey$ + "\UserChoice" + ProgId$=RegRead("HKEY_CURRENT_USER\" + KeyUserChoice$, "ProgId") + If ProgId$ + PrintN(SubKey$ + ", " + ProgId$) + EndIf + Index.l=Index.l+1 + Wend + End 0 +EndProcedure + +Procedure GetFTA(Extension.s) + GetAssocType(Extension.s) +EndProcedure + +Procedure SetAssociation(ProgramId.s,Extension.s) + Define result.l + If IsFileType(Extension.s) + If SetFileTypeAssociation(Extension.s,ProgramId.s) ;set FTA + DebugPrint("SetFileTypeAssociation OK") + Else + DebugPrint("SetFileTypeAssociation FAIL") + EndIf +Else + If SetProtocolAssociation(Extension.s,ProgramId.s) ;set PA + DebugPrint("SetProtocolAssociation OK") + Else + DebugPrint("SetProtocolAssociation FAIL") + EndIf +EndIf +EndProcedure + +Procedure.b IsNumeric(string.s) ;Returns 1 if numeric else 0 for any non numeric values + Protected iRegex = CreateRegularExpression(#PB_Any, "\D"),bParam = Bool(Not MatchRegularExpression(iRegex, string)) + FreeRegularExpression(iRegex) + ProcedureReturn bParam + EndProcedure + +Procedure.s GetIconFromCommandLine() + Protected iNumberOfParameters.i = CountProgramParameters() + Protected i + + For i=0 To iNumberOfParameters.i-1 + If ProgramParameter(i)="-i" Or ProgramParameter(i)="--icon" + Break + EndIf + Next + i=i+1 + If i>iNumberOfParameters + ProcedureReturn "" + Else + Protected IconPath.s=ProgramParameter(i) + If IsNumeric(IconPath.s) + ;Get Application Path and Append the Index - No implemented + EndIf + ProcedureReturn IconPath.s + EndIf +EndProcedure + +Procedure RegisterApplicationIcon(ApplicationID.s) + Protected IconPath.s=GetIconFromCommandLine() + If IconPath.s + If RegWrite("HKEY_CURRENT_USER\SOFTWARE\Classes\" + ApplicationID.s +"\DefaultIcon","",IconPath.s,#REG_SZ)=#ERROR_SUCCESS + DebugPrint("Set Icon OK") + EndIf +EndIf +EndProcedure + +Procedure RegisterApplicationID(FilePath.s,FileExt.s,CustomProgramId.s) + Protected ApplicationID.s="" + If CustomProgramId.s<>"" + ApplicationID.s=CustomProgramId.s + Else + ApplicationID.s=CreateApplicationID(FilePath.s,FileExt.s) + EndIf + If ApplicationID.s="" : DebugPrint("Error Application Create Program Id") : End 1 : EndIf + DebugPrint("Application Program Id = " + QuoteString(ApplicationID.s)) + Protected sCommand.s=QuoteString(FilePath.s)+ " " + QuoteString("%1") + If RegWrite("HKEY_CURRENT_USER\SOFTWARE\Classes\" + FileExt.s + "\OpenWithProgids",ApplicationID.s,"",#REG_NONE)=#ERROR_SUCCESS And + RegWrite("HKEY_CURRENT_USER\SOFTWARE\Classes\" + ApplicationID.s ,"","",#REG_SZ)=#ERROR_SUCCESS And + RegWrite("HKEY_CURRENT_USER\SOFTWARE\Classes\" + ApplicationID.s +"\shell\open\command","",sCommand.s,#REG_SZ)=#ERROR_SUCCESS + DebugPrint("Application Register OK") + RegisterApplicationIcon(ApplicationID.s) + SetAssociation(ApplicationID.s,FileExt.s) + SHChangeNotify_(#SHCNE_ASSOCCHANGED,#SHCNF_IDLIST,#NUL,#NUL) + Else + PrintN("Error Application Register") + End 1 + EndIf +EndProcedure + +Procedure UnRegisterApplicationID(FilePath_ApplicationID.s,FileExt.s) + Protected ApplicationID.s="" + If Not FileExist(FilePath_ApplicationID.s) + ApplicationID.s=FilePath_ApplicationID.s + Else + ApplicationID.s=CreateApplicationID(FilePath_ApplicationID.s,FileExt.s) + EndIf + DebugPrint("Unregister = " + ApplicationID.s) + Protected RegistryKey.s="Software\Classes\" + ApplicationID.s + Protected Ret=Reg_KeyExists(#HKEY_CURRENT_USER,RegistryKey.s) + Reg_DeleteValue(#HKEY_CURRENT_USER,"Software\Classes\" + FileExt.s + "\OpenWithProgids",ApplicationID.s) + DeleteHashRegistryKey(FileExt.s) + If Ret + Reg_DeleteKeyWithAllSub(#HKEY_CURRENT_USER,RegistryKey.s) + Ret=Reg_KeyExists(#HKEY_CURRENT_USER,RegistryKey.s) + If Ret=#True + DebugPrint("Key No Deleted = " + "HKEY_CURRENT_USER\" + RegistryKey.s) + Else + DebugPrint("Key Deleted = " + "HKEY_CURRENT_USER\" + RegistryKey.s) + EndIf + Else + DebugPrint("Key Not Found = " + "HKEY_CURRENT_USER\" + RegistryKey.s) + EndIf + SHChangeNotify_(#SHCNE_ASSOCCHANGED,#SHCNF_IDLIST,#NUL,#NUL) +EndProcedure + +Procedure Start() + Protected iNumberOfParameters.i = CountProgramParameters() + + + If (iNumberOfParameters=0 Or iNumberOfParameters>6);validate number of parameters + PrintHelp() + End 1 + EndIf + + If iNumberOfParameters=1 + If Not IsValidParameter(ProgramParameter(0),"-h|--help|-g|-get|-l|--list") + PrintN("Invalid Parameter") + PrintHelp() + End 1 + EndIf + EndIf + + + + If (ProgramParameter(0)="-h" Or ProgramParameter(0)="--help") ;validate -h parameter + PrintHelp() + End 1 + EndIf + + + EnableDisableDebug() ;Enable Or Disable Debug Mode + If g_Debug + ShowWindowsInformation() + EndIf + + If (ProgramParameter(0)="-l" Or ProgramParameter(0)="--list") ;validate -l parameter + ListAssocTypeProgIds() + End 0 + EndIf + + If (ProgramParameter(0)="-g" Or ProgramParameter(0)="--get") ;validate -g parameter + GetFTA(ProgramParameter(1)) + End 0 + EndIf + + If (ProgramParameter(0)="-u" Or ProgramParameter(0)="--unreg") ;validate -u parameter + UnRegisterApplicationID(ProgramParameter(1),ProgramParameter(2)) + End 0 + EndIf + + + If iNumberOfParameters>=3 And (ProgramParameter(0)="-r" Or ProgramParameter(0)="--reg") ;validate -r parameter + Define CustomProgramId.s="" + If iNumberOfParameters>=3 And ProgramParameter(3)<>"-d" And ProgramParameter(3)<>"--debug" And + ProgramParameter(3)<>"-i" And ProgramParameter(3)<>"--icon" + CustomProgramId.s=ProgramParameter(3) + EndIf + RegisterApplicationID(ProgramParameter(1),ProgramParameter(2),CustomProgramId.s) + End 0 + EndIf + + + If iNumberOfParameters>=2 + ;Set FileType/Protocol Association + Define ProgramId.s,Extension.s + ProgramId=ProgramParameter(0) + Extension=ProgramParameter(1) + RegisterApplicationIcon(ProgramId) + SetAssociation(ProgramId,Extension) + End 0 + EndIf + + ;no enough parameters + PrintN("Invalid Parameter") + End 1 + +EndProcedure + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;SFTA Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Test Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Procedure TestCase() + If OpenConsole() + PrintN("Running From IDE...") + ShowWindowsInformation() + PrintHelp() + Input() + CloseConsole() + EndIf +EndProcedure +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Test Funcions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Start App Test +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +CompilerIf #PB_Compiler_Debugger + TestCase() + End +CompilerEndIf + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Start App +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +If OpenConsole() + CheckValidOS() + Start() +EndIf +; IDE Options = PureBasic 5.62 (Windows - x86) +; ExecutableFormat = Console +; CursorPosition = 2 +; Folding = ------------ +; EnableXP +; UseIcon = Icon.ico +; Executable = ..\Compiled\SFTA.exe +; EnableExeConstant +; IncludeVersionInfo +; VersionField0 = 1.3.1 +; VersionField1 = 1.3.1 +; VersionField2 = Danysys +; VersionField3 = SFTA +; VersionField4 = 1.3.1 +; VersionField5 = 1.3.1 +; VersionField6 = Set Windows 8/10 File Type Association +; VersionField7 = SFTA +; VersionField8 = SFTA +; VersionField9 = © 2020 Danysys +; VersionField10 = © 2020 Danysys \ No newline at end of file diff --git a/tools/.gitignore b/tools/.gitignore index 212cda7..488facd 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -11,3 +11,5 @@ !searchreplace.exe !isuseradmin.exe !prompt-user.exe +!SFTA.exe + diff --git a/tools/SFTA.exe b/tools/SFTA.exe new file mode 100644 index 0000000000000000000000000000000000000000..2312517d92e6b66cccf976ee7e0f3eb7a390373b GIT binary patch literal 284672 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

m3D^K^>`rG; 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