User Profile
Mousefluff
Iron Contributor
Joined Oct 30, 2021
User Widgets
Recent Discussions
Re: Simple Guide On Effective Use Of Parallel Programming For C# In A Managed Code Environment:
Example script that utilizes concepts from the above post, and runs on a single core in a managed code environment, which emphasizes type safety: Save the following batch file to your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/Batch_PowerShell/Generic_Cryptographically_Secure_Password_Generator_Win11.bat/download NOTE: This is an example batch file, that uses PowerShell 5.1 with C# style syntax and .NET APIs, without using pointers, or direct / indirect addressing, yet still having low level access to each byte value, to create a virtual flag register, by utilizing the equivalent of a unary cast operator, right shift, left shift, and logical exclusive or, as a byte mask. By itself, this one of the most most efficient ways to sort reference types, only using unsigned integers ( byte values, ) and either a hash table or a byte array, used as an index to cross translate when it comes time to display the text on the screen, with the reference types stored in another array, along with the index being in the form of a byte array, that points to said array of reference types, which in contrast, are represented as a series of Unicode character values ( UTF-16. ) This is similar to how you're supposed to handle reference types, without recasting a reference type over and over again, which is very inefficient, or only recasting WHEN you need to display it on the screen. The syntax differs slightly from the C# version, given it's also an interpreted language that runs on the equivalent of a virtual machine. If you were to use this in C# it would be very fast, and you would not have to worry as much about type safety in a manged code environment. The whole purpose of this is achieve the same outcome without pointers, in a managed code environment, and not lose the performance gains associated with using C Language. For educational purposes, here's an example of the documentation that was used to write the above script: https://sourceforge.net/projects/openscriptlab/files/IDE_Compilation/PowerShell_5_1_List.txt/download81Views0likes0CommentsRe: bypassnro Removal
JourneymanMC wrote: the many users who experience scores of unauthorized login-attempts and eventually losing their account to hackers If you're wondering what happens to your attackers, people who actually do this get an IP ban, regardless of whether or not Microsoft allows you to skip the OOBE using a registry key. If you use a NIST-Approved Cryptographically Secure Random Number Generator, and the full range of printable Unicode ( UTF8 / UTF16 ) Characters, generating a character array with 16 values, each value not being a duplicate of another reference type in that array, along with two factor authentication, then you should have no issues with crude dictionary-based attacks that utilize a brute force method of repeated logins. I also use Transparent SME ( AMD version of Intel's TME / "Total Memory Encryption" ), and a password manager that encrypts the values in memory, as a byte array, to achieve FIPS-140 compliance, for my own personal benefit. It is true that it is faster to use an encrypted byte array using the index to represent each Unicode character, as character types are reference types, not value types, so when it comes time to update a form control, display the values on a console, or save them to a file, it is a one step process to convert them, so you don't have to recast reference types every single time something changes ( for this reason it is smarter to use C#, C++, GOLANG, etc, and not RUST. ) I also use SysInternal's Secure Delete to erase my browsing history or leftover files, while zeroing the drive itself every once in awhile, even if it seems like it would have a trivial impact on the outcome, due to the fact that the MFT records are difficult to recover even using the Windows File Recovery Tool.1.2KViews0likes1CommentMYSYS2 Installation Guide for Cross-Compilation on Visual Studio 2017, 2019, 2022, and WSL2
Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/IDE_Compilation/MYSYS2.txt/download MYSYS2 Paths: Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/IDE_Compilation/MYSYS2_Path_Win.txt/download NOTE: This folder layout, which can be easily edited, was generated with a batch file that utilizes the default configuration that comes with the UI-based setup program / installer. Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/IDE_Compilation/Generate_MYSYS2_Folder_Paths_Win.bat/download311Views0likes0CommentsRe: bypassnro Removal
Enterprise grade Windows isn't going away any time soon. I wouldn't panic over this one, given that most use the https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/boot-windows-to-audit-mode-or-oobe?view=windows-11#boot-manually-into-audit-mode-on-a-new-or-existing-installation that Microsoft provides, which https://learn.microsoft.com/en-us/windows/configuration/wcd/wcd-oobe and being able to https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/automate-oobe is not going away any time soon., though neither is being able to sideload apps ( though that's less common. ) On the release channel, it's not possible to download app updates using the Microsoft Store / WinGet / OneGet on 24H2, until you log with your Microsoft Account for the first time, at least with that one machine ID and product key, which is tied to your motherboard if it's not a retail key. WinGet would be non functional anyways, if you didn't want to login. So that means nothing would work, given WinGet is used in the background for nearly everything. That one batch file they talk about removing also doesn't utilize some of the other registry strings from the https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/customize-oobe guides, which are necessary.1.8KViews0likes0CommentsRe: 24H2 update - running out of ideas.
By default, it is enabled automatically on some SKUs. According to the official documentation, you have to use the command line to disable it, which means pressing SHIFT + F10 on the Setup screen, or just disabling it from within the Windows Preinstallation Environment. If you don't want to disable it, or it uses a password or key that you don't have, and all your personal files are already backed up, then it might be necessary to reformat using diskpart and the https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc753770(v=ws.11)#parameters parameter: https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/ https://learn.microsoft.com/en-us/powershell/module/bitlocker/disable-bitlocker#example-1-disable-bitlocker-for-a-volume https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-behavior#parameters https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/operations-guide103Views0likes0CommentsRe: Why "Windows Security Center Service could not start" message appears when I login to Windows?
On Windows 11 24H2, you won't be able to patch or install updates if the registry keys for Process Protection ( LaunchProtected ) are missing or set to zero. Currently, Microsoft has not provided a fix for this issue. You will get a read only error when trying to revert them back to the original when using an Online Windows Image. At that point, you have to use the following two files from within the Windows Preinstallation Environment, provided volume letter is set to C, for the Offline Windows Image, and both files are in the same directory: Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/Batch_PowerShell/ACL/WinPE_Modify_Registry_C_Drive_Win10_11_Post_Activation.bat/download Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/Batch_PowerShell/ACL/WinPE_Win11_24H2_Security_Health_Service.reg/download277Views0likes0CommentsRe: Clean Install Windows 11 on GigaBYTE 970A-DS3P (FX-6300)
When Installing offline with an official unpatched Windows 11 24H2 ISO image, it's important to use your product key. Never slipstream updates with 24H2, and only patch after you've activated. When you get to the OOBE screen during setup, press SHIFT + F10 to open the Command Line, and run the following batch file, which should be saved on another drive prior to running setup: Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/Batch_PowerShell/WinPE_BypassNRO.bat/download NOTE: Set the system clock right away, and the language and region. Don't install a discrete GPU driver, until you activate your copy of Windows, given it contains a UWP / ,NET MAUI App, which will be disabled, unlike default Windows Apps like Calculator / Notepad. ONLY Install dependencies, networking software, and the AMD Chipset driver, on an unactivated image. This motherboard does meet the requirements for Windows 11 24H2 64-bit, and has an fTPM ( TPM 2.0 ) support, which has been available since 2006, though on a laptop it would have been first available in 2008 to 2009 or so. You often have to use a script like this so you can install offline with an unpatched ISO Image. If changes are made before you activate, then you have to disable Tamper Protection first, using the Windows Security Center from the Settings UI. Also, DO NOT disable Smart App Control or the Microsoft Vulnerable Driver Blocklist. It will be really hard to patch using Windows Update if you do this, and most likely Microsoft Store Apps will be non-functional if you reset them ( it will give you a read only error or it will be unable to register them. If the Security Center Service is disabled, or the LaunchProtected and Security registry keys are modified from the default value, it won't allow you to update, even if you activate over the phone, though you can restore the original registry keys offline using the Windows Preinstallation Environment. ) When activating, use SLMGR /ATO on the Command Line, and then SLMGR /CPKY when the activation is successful, making sure to whitelist the following program and service: Program: C:\Windows\System32\SLUI.exe ( Windows Activation Client ) Service: Windows License Manager Service ( LicenseManager)328Views0likes0CommentsOne-Button / Automated Encrypted DNS (ODoH) Example On Windows 10 / 11
This stub resolver example utilizes ODoH (DNSCrypt-Proxy 2.x), can be used in conjunction with a VPN, and an optional Caching-Only DNS / Name Server behind it. NOTE: Right-click on the following batch files after saving them, and click "Run as administrator". Use Notepad to create this file on your desktop or another folder: https://sourceforge.net/projects/openscriptlab/files/Batch_PowerShell/DNSCrypt-Proxy_Auto_Installer.bat/download617Views0likes2CommentsRe: Major Bug in Windows 11 26120.1912 System Login Function
lornshrimpThere is official documentation on how to sideload apps, possibly even the app store itself, though that's not the most common thing people would do. When doing offline deployment / provisioning of Windows images, sideloading is a normal process. This other link is an official repo for Winget, which is used by the operating system to install applications and frameworks. I used Winget to do everything btw, which may seem surprising if you're not used to that: Microsoft Store Apps fail to start if default registry or file permissions modified -> https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/microsoft-store-apps-fail-to-start Volume Activation Technical Reference - Slmgr.vbs Options for Volume Activation -> https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn502540(v=ws.11) Windows volume activation - Troubleshoot Windows activation error codes -> https://learn.microsoft.com/en-us/troubleshoot/windows-server/licensing-and-activation/troubleshoot-activation-error-codes Windows Update error code reference -> https://learn.microsoft.com/en-us/windows/deployment/update/windows-update-error-reference NuGet Server API - Service index -> https://learn.microsoft.com/en-us/nuget/api/overview#service-index Use the WinGet tool to install and manage applications -> https://learn.microsoft.com/en-us/windows/package-manager/winget/ Github - Windows Package Manager - Releases -> https://github.com/microsoft/winget-cli/releases C++ Runtime framework packages for Desktop Bridge -> https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/libraries/c-runtime-packages-desktop-bridge#how-to-install-and-update-desktop-framework-packages [cmd.ms] the Microsoft Cloud command line! -> https://cmd.ms/ akaSearch = Search for aka.ms! -> https://akasearch.net/ aka.ms/commands -> https://github.com/microsoft/aka aka.ms/commands - readme -> https://github.com/microsoft/aka/blob/main/README.md317Views0likes0CommentsRe: Major Bug in Windows 11 26120.1912 System Login Function
lornshrimp Most people who experience this, are missing 5 apps that are installed by default. On the release channel build 26100.2033, this is also an issue. NOTE: If Task Manager is running, you can use both the Command Prompt, and the file manager built into Notepad's open file dialog box, as a temporary replacement for Windows Explorer. When you reset the Start Menu or another app, and those dependencies / frameworks are paused, but not staged, meaning they're physically not present, you didn't reset them first, then of course it will glitch out. Depending on the situation, if you close userinit.exe and shellhost.exe, which will constantly restart, it will stop flashing long enough for you to use xcopy without getting interrupted too many times. I mounted an RTM version of Win 11 24H2, with no patches, and copied them back over. Then I staged each one, by resetting them, before trying to reset the others. Btw even if you have to do this to activate Windows, they won't be fully functional UNLESS you have already activated your copy of Windows. So you will have to reset them, but you can't even fully utilize them until you activate. ( It will just give you access denied errors, meaning it will stay locked. This has little to do with AUMID or even the access control entries for that one set of files. What I mean, is that while that's important, it will only influence the outcome, once it's activated. ) This glitch appears when you go to reset an app without the dependencies / frameworks in place: "C:\Program Files\WindowsApps\Microsoft.UI.Xaml.2.8_8.2310.30001.0_x64__8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_x64__8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe" "C:\Program Files\WindowsApps\Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.UI.Xaml.2.8 | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.VCLibs.140.00 | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.VCLibs.140.00.UWPDesktop | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.NET.Native.Framework.2.2 | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.NET.Native.Runtime.2.2 | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.StorePurchaseApp | Reset-AppxPackage}" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-AppxPackage -AllUsers Microsoft.WindowsStore | Reset-AppxPackage}"256Views0likes0CommentsExample: Fully Uninstall Microsoft Edge on Windows 11 ( 3rd-Party Browser Required )
NOTE: Right-click on the following batch file after saving it, and click "Run as administrator". DISCLAIMER: Some Windows Apps rely on this, but if you are adamant about entirely removing Microsoft Edge, you can still patch / update them with the command line via the Servicing Stack / PowerShell / WinGet / NuGet, although this would require extra effort on your part. (1.) Use Notepad to create this file on your desktop or another folder: Remove_Microsoft_Edge.bat @ECHO OFF SETLOCAL EnableDelayedExpansion ((IF %Processor_Architecture%==ARM64 SET SDEL_EXT_=SDELETE64A)&(IF %Processor_Architecture%==AMD64 SET SDEL_EXT_=SDELETE64)&(IF %Processor_Architecture%==x86 SET SDEL_EXT_=SDELETE)) REM "Microsoft Edge Developer documentation - Distribute your app and the WebView2 Runtime - Detect if a WebView2 Runtime is already installed" -> "https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution?tabs=dotnetcsharp#detect-if-a-webview2-runtime-is-already-installed" IF [%1]==[] GOTO MSEDGERMV_SKIP_SRT_LBL_0_ IF NOT %1==BYPASS GOTO MSEDGERMV_SKIP_SRT_LBL_0_ IF [%2]==[] GOTO MSEDGERMV_SKIP_SRT_LBL_0_ IF %2==1 ((SET MSEDGERMV_VAR_SEL_=1)&(GOTO MSEDGERMV_SKIP_SRT_LBL_1_)) IF %2==2 ((SET MSEDGERMV_VAR_SEL_=2)&(GOTO MSEDGERMV_SKIP_SRT_LBL_1_)) IF %2==3 ((SET MSEDGERMV_VAR_SEL_=3)&(GOTO MSEDGERMV_SKIP_SRT_LBL_1_)) IF %2==4 ((SET MSEDGERMV_VAR_SEL_=4)&(GOTO MSEDGERMV_SKIP_SRT_LBL_1_)) :MSEDGERMV_SKIP_SRT_LBL_0_ CLS ECHO [MS EDGE REMOVAL SCRIPT:] ECHO: ECHO [1] [RECOMMENDED:] [MSEdge] ECHO [2] [OPTIONAL:] [MSEdgeWebView] ECHO [3] [OPTIONAL:] [MSEdgeCore] ECHO [4] [SCAN ^& REMOVE All] ECHO [5] [NONE / SKIP] ECHO: CHOICE /C 12345 /N /M "CHOOSE FROM THE FOLLOWING..." IF %ErrorLevel% EQU 255 GOTO MSEDGERMV_SKIP_SRT_LBL_0_ IF %ErrorLevel% EQU 5 GOTO MSEDGERMVLSTLNE_ IF %ErrorLevel% EQU 1 ((SET MSEDGERMV_VAR_SEL_=1)&(SET MSEDGERMVTMP_SEL_VAR_=[MSEdge])) IF %ErrorLevel% EQU 2 ((SET MSEDGERMV_VAR_SEL_=2)&(SET MSEDGERMVTMP_SEL_VAR_=[MSEdgeWebView])) IF %ErrorLevel% EQU 3 ((SET MSEDGERMV_VAR_SEL_=3)&(SET MSEDGERMVTMP_SEL_VAR_=[MSEdgeCore])) IF %ErrorLevel% EQU 4 ((SET MSEDGERMV_VAR_SEL_=4)&(SET MSEDGERMVTMP_SEL_VAR_=[MSEdge] + [MSEdgeWebView] + [MSEdgeCore])) CHOICE /C YN /N /M "REMOVING: %MSEDGERMVTMP_SEL_VAR_%... <- [Y] YES TO PROCEED [N] NO TO SKIP?" IF %ErrorLevel% EQU 255 GOTO MSEDGERMV_SKIP_SRT_LBL_0_ IF %ErrorLevel% EQU 2 GOTO MSEDGERMVLSTLNE_ :MSEDGERMV_SKIP_SRT_LBL_1_ SET MSEDGERMV_CNTR_=0 IF %MSEDGERMV_VAR_SEL_% EQU 1 GOTO MSEDGERMV_SKIP_1_LBL IF %MSEDGERMV_VAR_SEL_% EQU 3 GOTO MSEDGERMV_SKIP_2_LBL IF EXIST "%ProgramFiles(x86)%\Microsoft\EdgeWebView" (((TAKEOWN /R /A /F "%ProgramFiles(x86)%\Microsoft\EdgeWebView" /D Y)&(ICACLS "\\?\%ProgramFiles(x86)%\Microsoft\EdgeWebView" /RESET /T /C /L /Q)) >nul 2>&1) FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%ProgramFiles(x86)%\Microsoft\EdgeWebView\Application\setup.exe" 2^> nul`) DO ("%%~sA" --force-uninstall --uninstall --msedgewebview --system-level --verbose-logging) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramFiles(x86)%\Microsoft\EdgeWebView")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramFiles(x86)%\Microsoft\EdgeWebView" 2> nul)) :MSEDGERMV_SKIP_1_LBL IF %MSEDGERMV_VAR_SEL_% EQU 2 GOTO MSEDGERMV_SKIP_3_LBL IF EXIST "%ProgramFiles(x86)%\Microsoft\Edge" (((TAKEOWN /R /A /F "%ProgramFiles(x86)%\Microsoft\Edge" /D Y)&(ICACLS "\\?\%ProgramFiles(x86)%\Microsoft\Edge" /RESET /T /C /L /Q)) >nul 2>&1) IF EXIST "%ProgramFiles%\Microsoft\EdgeUpdater" (((TAKEOWN /R /A /F "%ProgramFiles%\Microsoft\EdgeUpdater" /D Y)&(ICACLS "\\?\%ProgramFiles%\Microsoft\EdgeUpdater" /RESET /T /C /L /Q)) >nul 2>&1) IF EXIST "%ProgramFiles(x86)%\Microsoft\EdgeUpdate" (((TAKEOWN /R /A /F "%ProgramFiles(x86)%\Microsoft\EdgeUpdate" /D Y)&(ICACLS "\\?\%ProgramFiles(x86)%\Microsoft\EdgeUpdate" /RESET /T /C /L /Q)) >nul 2>&1) IF EXIST "%ProgramData%\Microsoft\EdgeUpdate" (((TAKEOWN /R /A /F "%ProgramData%\Microsoft\EdgeUpdate" /D Y)&(ICACLS "\\?\%ProgramData%\Microsoft\EdgeUpdate" /RESET /T /C /L /Q)) >nul 2>&1) IF EXIST "%AppData%\Microsoft\Edge" (((TAKEOWN /R /A /F "%AppData%\Microsoft\Edge" /D Y)&(ICACLS "\\?\%AppData%\Microsoft\Edge" /RESET /T /C /L /Q)) >nul 2>&1) IF EXIST "%LocalAppData%\Microsoft\Edge" (((TAKEOWN /R /A /F "%LocalAppData%\Microsoft\Edge" /D Y)&(ICACLS "\\?\%LocalAppData%\Microsoft\Edge" /RESET /T /C /L /Q)) >nul 2>&1) FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%ProgramFiles(x86)%\Microsoft\Edge\Application\setup.exe" 2^> nul`) DO ("%%~sA" --force-uninstall --uninstall --system-level --verbose-logging) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramFiles(x86)%\Microsoft\Edge")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramFiles(x86)%\Microsoft\Edge" 2> nul)) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramFiles%\Microsoft\EdgeUpdater")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramFiles%\Microsoft\EdgeUpdater" 2> nul)) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramFiles(x86)%\Microsoft\EdgeUpdate")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramFiles(x86)%\Microsoft\EdgeUpdate" 2> nul)) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramData%\Microsoft\EdgeUpdate")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramData%\Microsoft\EdgeUpdate" 2> nul)) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%AppData%\Microsoft\Edge")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%AppData%\Microsoft\Edge" 2> nul)) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%LocalAppData%\Microsoft\Edge")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%LocalAppData%\Microsoft\Edge" 2> nul)) :MSEDGERMV_SKIP_2_LBL IF %MSEDGERMV_VAR_SEL_% EQU 1 GOTO MSEDGERMV_SKIP_3_LBL IF EXIST "%ProgramFiles(x86)%\Microsoft\EdgeCore" (((TAKEOWN /R /A /F "%ProgramFiles(x86)%\Microsoft\EdgeCore" /D Y)&(ICACLS "\\?\%ProgramFiles(x86)%\Microsoft\EdgeCore" /RESET /T /C /L /Q)) >nul 2>&1) FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%ProgramFiles(x86)%\Microsoft\EdgeCore\setup.exe" 2^> nul`) DO ("%%~sA" --force-uninstall --uninstall --system-level --verbose-logging) ((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -S -NOBANNER "\\?\%ProgramFiles(x86)%\Microsoft\EdgeCore")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" RMDIR /S /Q "\\?\%ProgramFiles(x86)%\Microsoft\EdgeCore" 2> nul)) :MSEDGERMV_SKIP_3_LBL IF %MSEDGERMV_VAR_SEL_% EQU 4 ((((SC CONFIG edgeupdate START= DISABLED)&(SC CONFIG edgeupdatem START= DISABLED))&((NET STOP edgeupdate)&(NET STOP edgeupdatem))&((SC DELETE edgeupdate)&(SC DELETE edgeupdatem))) >nul 2>&1) IF %MSEDGERMV_VAR_SEL_% EQU 4 FOR /F "usebackq tokens=* delims=" %%A IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree" /F "MicrosoftEdgeUpdateTaskMachine" ^| FIND "HKEY_LOCAL_MACHINE"`) DO ((SET TMP_VAR_=%%A)&(SetObjectSecurity KEY "HKLM!TMP_VAR_:~18!" "O:BA" -q)&(SetObjectSecurity KEY "HKLM!TMP_VAR_:~18!" "O:BAG:SYD:PAI(A;CI;KR;;;RC)(A;CI;KA;;;SY)(A;CI;KA;;;BA)(A;CI;KA;;;BU)(A;;KR;;;AC)" -q)&(REG DELETE "HKLM!TMP_VAR_:~18!" /F)) :MSEDGERMVLSTLNE_ ENDLOCAL DisableDelayedExpansion MOVE NUL 2>&0 (2.) Use Notepad to create this file on your desktop or another folder: Remove_Microsoft_Edge_Update_Service.bat @ECHO OFF SETLOCAL EnableDelayedExpansion ((((SC CONFIG edgeupdate START= DISABLED)&(SC CONFIG edgeupdatem START= DISABLED))&((NET STOP edgeupdate)&(NET STOP edgeupdatem))&((SC DELETE edgeupdate)&(SC DELETE edgeupdatem))) >nul 2>&1) FOR /F "usebackq tokens=* delims=" %%A IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree" /F "MicrosoftEdgeUpdateTaskMachine" ^| FIND "HKEY_LOCAL_MACHINE"`) DO ((SET TMP_VAR_=%%A)&(SetObjectSecurity KEY "HKLM!TMP_VAR_:~18!" "O:BA" -q)&(SetObjectSecurity KEY "HKLM!TMP_VAR_:~18!" "O:BAG:SYD:PAI(A;CI;KR;;;RC)(A;CI;KA;;;SY)(A;CI;KA;;;BA)(A;CI;KA;;;BU)(A;;KR;;;AC)" -q)&(REG DELETE "HKLM!TMP_VAR_:~18!" /F)) ENDLOCAL DisableDelayedExpansion MOVE NUL 2>&017KViews0likes4CommentsExample: Logitech SetPoint Compatibility Fix For Windows 10 / 11
NOTE: Right-click on the following batch file after saving it, and click "Run as administrator". (2.) Use Notepad to create this file on your desktop or another folder: Win10_11_Logitech_SetPoint_Compatibility_Fix.bat @ECHO OFF SETLOCAL IF EXIST "%ProgramFiles%\Logitech\SetPointP\SetPoint.exe" (((REG DELETE "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%ProgramFiles%\Logitech\SetPointP\SetPoint.exe" /F)&(REG DELETE "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%ProgramFiles%\Logitech\SetPointP\SetPoint.exe" /F)&(REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%ProgramFiles%\Logitech\SetPointP\SetPoint.exe" /T REG_SZ /D "~ VistaRTMVersionLie FailObsoleteShellAPIs IgnoreMessageBox \"Microsoft Visual C++ Runtime Library\" LoadLibraryRedirect ManageLinks" /F)&(REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%ProgramFiles%\Logitech\SetPointP\SetPoint.exe" /T REG_SZ /D "~ WIN7RTM" /F)) >nul 2>&1) ENDLOCAL MOVE NUL 2>&0 NOTE: The batch file located above this line uses a https://learn.microsoft.com/en-us/windows/deployment/planning/compatibility-fixes-for-windows-8-windows-7-and-windows-vista#compatibility-fixes that will prevent the application from crashing / throw an exception, and displaying a message box with the title "Microsoft Visual C++ Runtime Library" which also contains the following text: "Runtime Error! Program: C:\Program Files\Logitech\SetPointP\SetPoint.exe This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information."Re: do-while in parallel
Rober2024 Even in PowerShell, as with C#, Classes can be used alongside the default PowerShell Cmdlets, though you may have to create a new .NET object, or use Class Inheritance to get similar functionality: PowerShell - Creating .NET and COM objects -> https://learn.microsoft.com/en-us/powershell/scripting/samples/creating-.net-and-com-objects--new-object-?view=powershell-7.4 PowerShell - Using static classes and methods -> https://learn.microsoft.com/en-us/powershell/scripting/samples/using-static-classes-and-methods?view=powershell-7.4 PowerShell - Classes - Limitations -> https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_classes .NET API browser -> https://learn.microsoft.com/en-us/dotnet/api/ System.Threading Namespace -> https://learn.microsoft.com/en-us/dotnet/api/system.threading?view=netframework-4.0 System.ComponentModel Namespace -> https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel?view=netframework-4.0234Views0likes0CommentsSimple Guide On Effective Use Of Parallel Programming For C# In A Managed Code Environment:
Parallel programming in C# uses a variation of Managed Threading, that relies on PLINQ, Expression Trees, The Barrier Class, Thread Class, BackgroundWorker Class, SpinWait Struct, SpinLock Struct, and Thread-Tracking Mode for SpinLock. The reason is that it's faster to use the environment to determine how many cores / threads are available, as to not starve the device of resources, which at that point, you have to use the BackgroundWorker Class to manage each task you've created. Often in this scenario, you can end up with a deadlock condition, because you have more than one task trying to access a shared resource. It's much easier and faster to split up each task, ONLY using byte arrays, assigning each task individual byte arrays to sort / parse, encrypted or not, with the Stream class, or a sub variation of that Class, and then when each task finishes, they all finish at different times, but the shared resource is divided up into portions, so that they will only be able to fill one area of that array. The reason why Barrier is used in this situation, is it forces each one to wait until all the tasks are finished, or until they all ARRIVE at the same place, which solves one timing issue, yet it might create another where there's a bit of a timing mismatch if your estimates are wrong, you overshoot or undershoot I mean. At the very end, you can use a separate process to just COPY from each individual array, without a deadlock scenario occurring. The only issue, is you have to estimate how many threads are available ahead of time, and you can't use every single thread, yet you're going to have to divide a single resource between all those threads. Beforehand, you have to verify if it's a waste of time to use more than one thread. The reason why I say this, is that a lot of people use reference types, not knowing they are immutable, and they take a huge / massive performance hit because of this. Often you have to convert strings into byte arrays, or use a pre-initialized character array at the start of the program, which contains the Unicode values that you want to recast individually as strings, and then use a byte array as an INDEX or a placeholder, of a Unicode character array. If you’re not encrypting the byte arrays, or using them for text parsing, which byte arrays tend to be best in high throughput scenarios, than integer arrays will suffice. The index can be scrambled based on how you want to represent that one string, though it's smarter to only cast a new reference type when you want to display text on the screen. If you spend too much time manually parsing using built-in libraries, it's REALLY SLOW. A byte array is better to use than an integer array in this sort of situation. You might have to create separate indexes with a byte array representing a set of binary flags, to determine whether each one is a letter, number, symbol, etc, or how you want to classify each one based on the code chart that you're using. You would be better off in that situation to just use right shift / left shift / XOR, etc, to set the flags. Then you have something which is also very fast, and almost equivalent to a Barrel Shifter, given C# does not allow you to use pointers, as it's managed code / a managed environment. All the Boolean Logical Operators with Compound Assignment rely on pre-initialized Cast Expressions of Integer Literals, Bitwise and Shift Operators, combined with Lambda Expressions, and Operator Overloading. The purpose of the Shift Operators is to mask / pad the bits of one byte value with zeroes, so that your Cast Expression Of An Integer Literal, which serves at the mask, always gives you a fixed / deterministic result, when used in conjunction with Boolean Logical Operators, especially if the value is smaller than 8-bits / a single byte, or you're dealing with a larger array has to represent a flag "register" with a size of ( 2 ^ 8 ) 256 bits, which is basically a Double-Word: "Microsoft Learn - Boolean logical operators - AND, OR, NOT, XOR - Compound assignment" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" "Microsoft Learn - Bitwise and shift operators (C# reference)" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators" "Microsoft Learn - Operator overloading - predefined unary, arithmetic, equality and comparison operators" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/operator-overloading" "Microsoft Learn - Lambda expressions and anonymous functions" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-expressions" "Microsoft Learn - Integral numeric types (C# reference) - Integer literals" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#integer-literals" "Microsoft Learn - Type-testing operators and cast expressions - is, as, typeof and casts - Cast expression" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/type-testing-and-cast#cast-expression" "Microsoft Learn - Deserialization risks in use of BinaryFormatter and related types" -> "https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide" "Microsoft Learn - BinaryReader Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.io.binaryreader?view=netframework-4.0" "Microsoft Learn - Stream Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.io.stream?view=netframework-4.0" "Microsoft Learn - StreamWriter Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.io.streamwriter?view=netframework-4.0" "Microsoft Learn - StreamReader Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=netframework-4.0" "Microsoft Learn - File and Stream I/O" -> "https://learn.microsoft.com/en-us/dotnet/standard/io/" "Microsoft Learn - Pipe Functions" -> "https://learn.microsoft.com/en-us/windows/win32/ipc/pipe-functions" "Microsoft Learn - System.IO.Pipes Namespace" -> "https://learn.microsoft.com/en-us/dotnet/api/system.io.pipes?view=netframework-4.0" "Microsoft Learn - Custom Partitioners for PLINQ and TPL" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl" "Microsoft Learn - Expression Trees" -> "https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/expression-trees/" "Microsoft Learn - Build expression trees" -> "https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/expression-trees/expression-trees-building" "Microsoft Learn - Translate expression trees" -> "https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" "Microsoft Learn - Execute expression trees" -> "https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" "Microsoft Learn - System.Windows.Threading Namespace" -> "https://learn.microsoft.com/en-us/dotnet/api/system.windows.threading?view=netframework-4.0" "Microsoft Learn - System.Threading Namespace" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading?view=netframework-4.0" "Microsoft Learn - System.Threading.Channels Namespace" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.channels?view=netcore-3.0" "Microsoft Learn - System.Threading.Tasks Namespace" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks?view=netframework-4.0" "Microsoft Learn - Timer Class (System.Timers)" -> "https://learn.microsoft.com/en-us/dotnet/api/system.timers?view=netframework-4.0" "Microsoft Learn - Timer Class (System.Threading)" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.timer?view=netframework-4.0" "Microsoft Learn - DispatcherTimer Class (System.Windows.Threading)" -> "https://learn.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatchertimer?view=netframework-4.0" "Microsoft Learn - Dispatcher Class (System.Windows.Threading)" -> "https://learn.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatcher?view=netframework-4.0" "Microsoft Learn - Threads and threading" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/threads-and-threading" "Microsoft Learn - Using threads and threading" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/using-threads-and-threading" "Microsoft Learn - Introduction to PLINQ" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq" "Microsoft Learn - Task Parallel Library (TPL)" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl" "Microsoft Learn - Lambda Expressions in PLINQ and TPL" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl" "Microsoft Learn - Multithreading in Windows Forms Controls" -> "https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/multithreading-in-windows-forms-controls" "Microsoft Learn - Managed threading best practices" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/managed-threading-best-practices" "Microsoft Learn - Parallel programming in .NET: A guide to the documentation" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/" "Microsoft Learn - Thread Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.thread" "Microsoft Learn - BackgroundWorker Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker" "Microsoft Learn - Synchronizing data for multithreading" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/synchronizing-data-for-multithreading" "Microsoft Learn - Overview of synchronization primitives" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/overview-of-synchronization-primitives" "Microsoft Learn - Environment.ProcessorCount Property" -> "https://learn.microsoft.com/en-us/dotnet/api/system.environment.processorcount" "Microsoft Learn - Managed threading best practices - Number of Processors" -> "https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-1.1/1c9txz50(v=vs.71)#number-of-processors" "Microsoft Learn - lock statement - ensure exclusive access to a shared resource" -> "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/lock" "Microsoft Learn - Reliability Best Practices" -> "https://learn.microsoft.com/en-us/dotnet/framework/performance/reliability-best-practices" "Microsoft Learn - BackgroundWorker Component Overview" -> "https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/backgroundworker-component-overview" "Microsoft Learn - How to: Run an Operation in the Background" -> "https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/how-to-run-an-operation-in-the-background" "Microsoft Learn - Thread-safe collections" -> "https://learn.microsoft.com/en-us/dotnet/standard/collections/thread-safe/" "Microsoft Learn - Threading objects and features" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/threading-objects-and-features" "Microsoft Learn - Barrier" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/barrier" "Microsoft Learn - Barrier Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.barrier?view=netframework-4.0" "Microsoft Learn - SpinWait" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/spinwait" "Microsoft Learn - SpinWait Struct" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.spinwait?view=netframework-4.0" "Microsoft Learn - SpinLock" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/spinlock" "Microsoft Learn - SpinLock Struct" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.spinlock?view=netframework-4.0" "Microsoft Learn - How to: use SpinLock for low-level synchronization" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/how-to-use-spinlock-for-low-level-synchronization" "Microsoft Learn - How to: Enable Thread-Tracking Mode in SpinLock" -> "https://learn.microsoft.com/en-us/dotnet/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock" "Microsoft Learn - Chaining tasks using continuation tasks" -> "https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks" "Microsoft Learn - Interlocked Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.interlocked?view=netframework-4.0" "Microsoft Learn - TaskFactory Class" -> "https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskfactory?view=netframework-4.0"592Views0likes2CommentsASUS Update Check Removal Tool
NOTE: Right-click on the following batch files after saving them, and click "Run as administrator". Use Notepad to create this file on your desktop or another folder: ASUS_Update_Check_Remove.bat @ECHO OFF SETLOCAL REM WHEN THE NETWORK STACK IS DISABLED IN UEFI / BIOS, AND ARMORY CRATE IS ENABLED, THE UEFI WILL LEAVE BEHIND AN UPDATE SERVICE, WHICH CANNOT BE REMOVED WITH THE ARMORY CRATE UNINSTALL TOOL, AND HAS TO BE REMOVED MANUALLY, WITH THE ASUS ARMORY CRATE BEING DISABLED IN UEFI / BIOS BEFOREHAND CD /D "%~dp0" SET ASUS_UPDTCHK_RMV_RSTRT_VAL=0 IF [%1]==[] GOTO ASUS_UPDTCHK_RMV_RSTRT_LBL_ IF %1==ASUS_UPDTCHK_RMV_RESTART (SET ASUS_UPDTCHK_RMV_RSTRT_VAL=1) :ASUS_UPDTCHK_RMV_RSTRT_LBL_ IF %ASUS_UPDTCHK_RMV_RSTRT_VAL% EQU 0 GOTO ASUS_UPDTCHK_RMV_END_LBL_ IF %Processor_Architecture%==ARM64 SET SDEL_EXT_=SDELETE64A IF %Processor_Architecture%==AMD64 SET SDEL_EXT_=SDELETE64 IF %Processor_Architecture%==x86 SET SDEL_EXT_=SDELETE NET STOP AsusUpdateCheck TASKKILL /IM AsusUpdateCheck.exe /T /F SC DELETE AsusUpdateCheck PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-Item -Path 'HKLM:\SYSTEM\ControlSet001\Services\AsusUpdateCheck' -Recurse -Force}" IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -NOBANNER "%SystemRoot%\System32\AsusDownLoadLicense.exe" "%SystemRoot%\System32\AsusUpdateCheck.exe" IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" DEL /Q "%SystemRoot%\System32\AsusDownLoadLicense.exe" "%SystemRoot%\System32\AsusUpdateCheck.exe" :ASUS_UPDTCHK_RMV_END_LBL_ IF %ASUS_UPDTCHK_RMV_RSTRT_VAL% EQU 0 (CALL ASUS_Update_Check_Remove.bat ASUS_UPDTCHK_RMV_RESTART >nul 2>&1) ENDLOCAL MOVE NUL 2>&0Example: Use WinPE To Remove A Non-Functional Driver From An Offline 10 / 11 Image
REM List All 3rd-Party Drivers on an Offline Windows 10/11 Image IF NOT EXIST "C:\Scrtch" MKDIR "C:\Scrtch" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-WindowsDriver -Path C:\ -ScratchDirectory C:\Scrtch | Sort ProviderName | Format-Table Driver,ProviderName,ClassName,BootCritical,OriginalFileName -AutoSize | Out-String -Stream -Width 32767}" RMDIR /S /Q "C:\Scrtch" REM Create a UTF-8 Text File That Lists All 3rd-Party Drivers on an Offline Windows 10/11 Image IF NOT EXIST "C:\Scrtch" MKDIR "C:\Scrtch" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Set-Content -Path 'C:\Driver_List.txt' -value (Get-WindowsDriver -Path C:\ -ScratchDirectory C:\Scrtch | Sort ProviderName | Format-Table Driver,ProviderName,ClassName,BootCritical,OriginalFileName -AutoSize | Out-String -Stream -Width 32767)}" RMDIR /S /Q "C:\Scrtch" REM Remove a Driver from an Offline Windows 10/11 Image IF NOT EXIST "C:\Scrtch" MKDIR "C:\Scrtch" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-WindowsDriver -Driver oem<NUMBER>.inf -Path C:\ -ScratchDirectory C:\Scrtch}" RMDIR /S /Q "C:\Scrtch"Re: Prevent users from disconnecting AOVPN user tunnel
Peter HollandYou asked Microsoft to rewrite the default interface to suit your needs, which is not going to happen, and then you mass reported my account and it was locked up for some period of time. You have 3 choices really: Make your own app ( learn how to code. ) Choice #2: Learn how to write scripts to bypass the limitations with the default UI Choice: #3: Use a 3rd-party solution ( this is all industry-standard, and I'm not going to say anything else. I already explained how the VPN works. )6.7KViews0likes2Comments
Recent Blog Articles
No content to show