From ab8abaee855dbb661f385122aebc70b6f87e85d8 Mon Sep 17 00:00:00 2001 From: elpatron Date: Sun, 19 Jan 2025 13:27:17 +0100 Subject: [PATCH] Update README.md --- README.md | 16 ++++-- RefreshEnv.cmd | 130 ------------------------------------------------- 2 files changed, 13 insertions(+), 133 deletions(-) delete mode 100644 RefreshEnv.cmd diff --git a/README.md b/README.md index 7f690f4..9cdeeca 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,19 @@ The Windows *cmd* file `install-beszel-service.cmd` installs the [Beszel](https://beszel.dev) agent as a service under Microsoft Windows. +## Prerequisites + +- Microsoft Windows 10 or later (32 or 64 bit) +- Git installed + +If you don“t have Git installed, either + +- install Git with Winget: `winget install git.git` or +- download and extract the ZIP file from [Releases](https://gitea.elpatron.me/elpatron/Install-Beszel-Agent/releases/). + ## Usage -Open a `cmd.exe` shell with administrative rights. +Open a `cmd.exe` shell with **administrative rights**. ```` git clone https://gitea.elpatron.me/elpatron/Install-Beszel-Agent @@ -14,8 +24,8 @@ cd Install-Beszel-Agent ## Explanation -The script copies `agent.exe` into the directory `%ProgramFiles%\BeszelAgent` and takes usage of *[NSSM - the Non-Sucking Service Manager](https://nssm.cc/)* to install the service. *NSSM* is being installed by *[Winget](https://github.com/microsoft/winget-cli)*. +The script copies `agent.exe` into the directory `%ProgramFiles%\BeszelAgent` and takes usage of *[NSSM - the Non-Sucking Service Manager](https://nssm.cc/)* to install the service. If *NSSM* is not yet installed on your system, it will be downloaded and installed to the Beszel agent directory. -The provided `agent.exe` was compiled on January, 18th 2025 by me and should be exchanged by a self compiled or official executable. +The provided `agent.exe` was compiled on January, 17th 2025 by me and should be exchanged by a self compiled or official executable. For more details, see [*Using Beszel to monitor Windows*](https://blog.ktz.me/using-beszel-to-monitor-windows/) by Alex Kretschmar. \ No newline at end of file diff --git a/RefreshEnv.cmd b/RefreshEnv.cmd deleted file mode 100644 index 391b8c6..0000000 --- a/RefreshEnv.cmd +++ /dev/null @@ -1,130 +0,0 @@ -:: Code generously provided by @beatcracker: https://github.com/beatcracker/detect-batch-subshell -@echo off - -setlocal EnableDelayedExpansion - -:: Dequote path to command processor and this script path -set ScriptPath=%~0 -set CmdPath=%COMSPEC:"=% - -:: Get command processor filename and filename with extension -for %%c in (!CmdPath!) do ( - set CmdExeName=%%~nxc - set CmdName=%%~nc -) - -:: Get this process' PID -:: Adapted from: http://www.dostips.com/forum/viewtopic.php?p=22675#p22675 -set "uid=" -for /l %%i in (1 1 128) do ( - set /a "bit=!random!&1" - set "uid=!uid!!bit!" -) - -for /f "tokens=2 delims==" %%i in ( - 'wmic Process WHERE "Name='!CmdExeName!' AND CommandLine LIKE '%%!uid!%%'" GET ParentProcessID /value' -) do ( - rem Get commandline of parent - for /f "tokens=1,2,*" %%j in ( - 'wmic Process WHERE "Handle='%%i'" GET CommandLine /value' - ) do ( - - rem Strip extra CR's from wmic output - rem http://www.dostips.com/forum/viewtopic.php?t=4266 - for /f "delims=" %%x in ("%%l") do ( - rem Dequote path to batch file, if any (3rd argument) - set ParentScriptPath=%%x - set ParentScriptPath=!ParentScriptPath:"=! - ) - - rem Get parent process path - for /f "tokens=2 delims==" %%y in ("%%j") do ( - rem Dequote parent path - set ParentPath=%%y - set ParentPath=!ParentPath:"=! - - rem Handle different invocations: C:\Windows\system32\cmd.exe , cmd.exe , cmd - for %%p in (!CmdPath! !CmdExeName! !CmdName!) do ( - if !ParentPath!==%%p set IsCmdParent=1 - ) - - rem Check if we're running in cmd.exe with /c switch and this script path as argument - if !IsCmdParent!==1 if %%k==/c if "!ParentScriptPath!"=="%ScriptPath%" set IsExternal=1 - ) - ) -) - -if !IsExternal!==1 ( - echo %~nx0 does not work when run from this process. If you're in PowerShell, please 'Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1' and try again. - exit 1 -) - -endlocal -:: End code from @beatcracker -@echo off -:: -:: RefreshEnv.cmd -:: -:: Batch file to read environment variables from registry and -:: set session variables to these values. -:: -:: With this batch file, there should be no need to reload command -:: environment every time you want environment changes to propagate - -::echo "RefreshEnv.cmd only works from cmd.exe, please install the Chocolatey Profile to take advantage of refreshenv from PowerShell" -echo | set /p dummy="Refreshing environment variables from registry for cmd.exe. Please wait..." - -goto main - -:: Set one environment variable from registry key -:SetFromReg - "%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NUL - for /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do ( - echo/set "%~3=%%B" - ) - goto :EOF - -:: Get a list of environment variables from registry -:GetRegEnv - "%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp" - for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do ( - if /I not "%%~A"=="Path" ( - call :SetFromReg "%~1" "%%~A" "%%~A" - ) - ) - goto :EOF - -:main - echo/@echo off >"%TEMP%\_env.cmd" - - :: Slowly generating final file - call :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd" - call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd" - - :: Special handling for PATH - mix both User and System - call :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd" - call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd" - - :: Caution: do not insert space-chars before >> redirection sign - echo/set "Path=%%Path_HKLM%%;%%Path_HKCU%%" >> "%TEMP%\_env.cmd" - - :: Cleanup - del /f /q "%TEMP%\_envset.tmp" 2>nul - del /f /q "%TEMP%\_envget.tmp" 2>nul - - :: capture user / architecture - SET "OriginalUserName=%USERNAME%" - SET "OriginalArchitecture=%PROCESSOR_ARCHITECTURE%" - - :: Set these variables - call "%TEMP%\_env.cmd" - - :: Cleanup - del /f /q "%TEMP%\_env.cmd" 2>nul - - :: reset user / architecture - SET "USERNAME=%OriginalUserName%" - SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%" - - echo | set /p dummy="Finished." - echo . \ No newline at end of file