|
@@ -2,23 +2,36 @@
|
|
|
setlocal enabledelayedexpansion
|
|
setlocal enabledelayedexpansion
|
|
|
|
|
|
|
|
:: ====================================================
|
|
:: ====================================================
|
|
|
-:: Check for admin rights
|
|
|
|
|
|
|
+:: Define PowerShell paths
|
|
|
:: ====================================================
|
|
:: ====================================================
|
|
|
->nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
|
|
|
|
|
-if '%errorlevel%' NEQ '0' (
|
|
|
|
|
- echo Requesting elevation...
|
|
|
|
|
- goto UACPrompt
|
|
|
|
|
|
|
+set "PS5_PATH=%systemdrive%\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
|
|
|
+set "PS7_PATH=%ProgramFiles%\PowerShell\7\pwsh.exe"
|
|
|
|
|
+set "PS7_PREVIEW_PATH=%ProgramFiles%\PowerShell\7-preview\pwsh.exe"
|
|
|
|
|
+
|
|
|
|
|
+:: Find best PowerShell for admin elevation
|
|
|
|
|
+set "ELEVATION_PS="
|
|
|
|
|
+if exist "%PS7_PREVIEW_PATH%" (
|
|
|
|
|
+ set "ELEVATION_PS=%PS7_PREVIEW_PATH%"
|
|
|
|
|
+) else if exist "%PS7_PATH%" (
|
|
|
|
|
+ set "ELEVATION_PS=%PS7_PATH%"
|
|
|
|
|
+) else if exist "%PS5_PATH%" (
|
|
|
|
|
+ set "ELEVATION_PS=%PS5_PATH%"
|
|
|
|
|
+) else (
|
|
|
|
|
+ echo [ERROR] No PowerShell found for elevation!
|
|
|
|
|
+ pause
|
|
|
|
|
+ exit /b 1
|
|
|
)
|
|
)
|
|
|
-goto Admin
|
|
|
|
|
|
|
|
|
|
-:UACPrompt
|
|
|
|
|
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
|
|
|
|
|
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
|
|
|
|
|
- "%temp%\getadmin.vbs"
|
|
|
|
|
- del "%temp%\getadmin.vbs"
|
|
|
|
|
- exit /B
|
|
|
|
|
|
|
+:: ====================================================
|
|
|
|
|
+:: Launch with admin rights
|
|
|
|
|
+:: ====================================================
|
|
|
|
|
+if "%1"=="admin" goto :AdminMode
|
|
|
|
|
+
|
|
|
|
|
+echo [INFO] Launch with admin rights...
|
|
|
|
|
+"%ELEVATION_PS%" -Command "Start-Process cmd -ArgumentList '/c \"%~f0\" admin' -Verb RunAs"
|
|
|
|
|
+exit /B
|
|
|
|
|
|
|
|
-:Admin
|
|
|
|
|
|
|
+:AdminMode
|
|
|
pushd "%CD%"
|
|
pushd "%CD%"
|
|
|
CD /D "%~dp0"
|
|
CD /D "%~dp0"
|
|
|
|
|
|
|
@@ -28,43 +41,45 @@ CD /D "%~dp0"
|
|
|
|
|
|
|
|
title Visual Studio Telemetry Disable Launcher
|
|
title Visual Studio Telemetry Disable Launcher
|
|
|
|
|
|
|
|
|
|
+:: Set script directory
|
|
|
set "SCRIPT_DIR=%~dp0"
|
|
set "SCRIPT_DIR=%~dp0"
|
|
|
|
|
|
|
|
-set "PS7_PATH=C:\Program Files\PowerShell\7\pwsh.exe"
|
|
|
|
|
-set "PS7_PREVIEW_PATH=C:\Program Files\PowerShell\7-preview\pwsh.exe"
|
|
|
|
|
-set "PS5_PATH=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
|
|
|
-
|
|
|
|
|
|
|
+:: Initialize variables
|
|
|
set "PS_EXE="
|
|
set "PS_EXE="
|
|
|
set "PS_SCRIPT="
|
|
set "PS_SCRIPT="
|
|
|
set "PS_VERSION="
|
|
set "PS_VERSION="
|
|
|
set "SCRIPT_TYPE="
|
|
set "SCRIPT_TYPE="
|
|
|
|
|
|
|
|
:: ====================================================
|
|
:: ====================================================
|
|
|
-:: Find PowerShell Executable
|
|
|
|
|
|
|
+:: Find PowerShell Executable (пріоритет: Preview > 7 > 5)
|
|
|
:: ====================================================
|
|
:: ====================================================
|
|
|
|
|
|
|
|
-if exist "%PS7_PATH%" (
|
|
|
|
|
- set "PS_EXE=%PS7_PATH%"
|
|
|
|
|
- set "PS_VERSION=PowerShell 7"
|
|
|
|
|
- goto :found_powershell
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
if exist "%PS7_PREVIEW_PATH%" (
|
|
if exist "%PS7_PREVIEW_PATH%" (
|
|
|
set "PS_EXE=%PS7_PREVIEW_PATH%"
|
|
set "PS_EXE=%PS7_PREVIEW_PATH%"
|
|
|
set "PS_VERSION=PowerShell 7 Preview"
|
|
set "PS_VERSION=PowerShell 7 Preview"
|
|
|
|
|
+ set "PS_MAJOR=7"
|
|
|
|
|
+ goto :found_powershell
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+if exist "%PS7_PATH%" (
|
|
|
|
|
+ set "PS_EXE=%PS7_PATH%"
|
|
|
|
|
+ set "PS_VERSION=PowerShell 7"
|
|
|
|
|
+ set "PS_MAJOR=7"
|
|
|
goto :found_powershell
|
|
goto :found_powershell
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
if exist "%PS5_PATH%" (
|
|
if exist "%PS5_PATH%" (
|
|
|
set "PS_EXE=%PS5_PATH%"
|
|
set "PS_EXE=%PS5_PATH%"
|
|
|
set "PS_VERSION=PowerShell 5"
|
|
set "PS_VERSION=PowerShell 5"
|
|
|
|
|
+ set "PS_MAJOR=5"
|
|
|
goto :found_powershell
|
|
goto :found_powershell
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
echo [ERROR] No compatible PowerShell version found!
|
|
echo [ERROR] No compatible PowerShell version found!
|
|
|
echo.
|
|
echo.
|
|
|
echo Please install either:
|
|
echo Please install either:
|
|
|
-echo - PowerShell 7 (recommended)
|
|
|
|
|
|
|
+echo - PowerShell 7 Preview (recommended)
|
|
|
|
|
+echo - PowerShell 7
|
|
|
echo - PowerShell 5 (Windows PowerShell)
|
|
echo - PowerShell 5 (Windows PowerShell)
|
|
|
echo.
|
|
echo.
|
|
|
pause
|
|
pause
|
|
@@ -80,13 +95,20 @@ for /f "tokens=4-5 delims=. " %%i in ('ver') do (
|
|
|
set "WIN_MINOR=%%j"
|
|
set "WIN_MINOR=%%j"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-:: Select appropriate script
|
|
|
|
|
-if "%PS_VERSION%"=="PowerShell 5" (
|
|
|
|
|
- set "SCRIPT_BASENAME=off_telemetry_ps5_win7+.ps1"
|
|
|
|
|
- set "SCRIPT_TYPE=PowerShell 5 (Windows 7+)"
|
|
|
|
|
|
|
+:: ====================================================
|
|
|
|
|
+:: Choose Script Based on Windows Version AND PowerShell Version
|
|
|
|
|
+:: ====================================================
|
|
|
|
|
+if !WIN_MAJOR! GEQ 10 (
|
|
|
|
|
+ if !PS_MAJOR!==5 (
|
|
|
|
|
+ set "SCRIPT_BASENAME=off_telemetry_ps5_win7+.ps1"
|
|
|
|
|
+ set "SCRIPT_TYPE=Windows 10/11 with PowerShell 5"
|
|
|
|
|
+ ) else (
|
|
|
|
|
+ set "SCRIPT_BASENAME=off_telemetry_ps7.ps1"
|
|
|
|
|
+ set "SCRIPT_TYPE=Windows 10/11 with PowerShell 7"
|
|
|
|
|
+ )
|
|
|
) else (
|
|
) else (
|
|
|
- set "SCRIPT_BASENAME=off_telemetry_ps7.ps1"
|
|
|
|
|
- set "SCRIPT_TYPE=PowerShell 7 (all Windows versions)"
|
|
|
|
|
|
|
+ set "SCRIPT_BASENAME=off_telemetry_ps5_win7+.ps1"
|
|
|
|
|
+ set "SCRIPT_TYPE=Windows 7/8/8.1"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
:: ====================================================
|
|
:: ====================================================
|
|
@@ -169,6 +191,8 @@ echo [INFO] Launching Visual Studio Telemetry Disabler...
|
|
|
echo [INFO] PowerShell: %PS_VERSION%
|
|
echo [INFO] PowerShell: %PS_VERSION%
|
|
|
echo [INFO] Script: !SCRIPT_TYPE!
|
|
echo [INFO] Script: !SCRIPT_TYPE!
|
|
|
echo.
|
|
echo.
|
|
|
|
|
+echo [WARNING] Administrator rights may be required for some registry changes.
|
|
|
|
|
+echo.
|
|
|
|
|
|
|
|
cd /d "%SCRIPT_DIR%"
|
|
cd /d "%SCRIPT_DIR%"
|
|
|
|
|
|