EasyNVR攝像機H5流媒體服務器在windows上批處理腳本自動以管理員權限運行

不少時候, 咱們須要以管理員權限來運行批處理腳本, 好比操做 windows 服務. EasyNVR 中提供安裝服務的批處理腳本, 運行這個bat文件, 自動將 EasyNVR 以 windows 服務的形式安裝運行. 這樣, 系統重啓, 可以保證咱們的程序自動啓動, 不須要人爲干預. 可是, 涉及到 windows 服務的安裝, 在 win7 , win10 上面, 須要管理員權限來運行. 早前, 咱們作的比較簡單, 把程序打包發給客戶的時候, 老是提醒客戶, 以管理員權限運行 咱們的啓動腳本.shell

終於有一天, 我不想再發出 以管理員權限運行 這樣的提醒了. 難道就不能自動以管理員權限運行嗎? 答案是能夠的, 因而有了這本博客.windows

百度搜索 以管理員權限運行 批處理 , 第一條結果來自知乎, https://www.zhihu.com/question/34541107?sort=created , 咱們一開始嘗試了知乎網友提供的方案, 測試發現, 知乎網友提供的方案只能在部分機器上運行正常, 另一部分機器上, 會致使 %~dp0 輸出不正常. 因而, 咱們放棄了這種方案. 繼續尋找.markdown

最終, 咱們在 stackoverflow 找到一位叫 Matt 的網友留下的 code. 經過測試, 他提供的 code 徹底符合咱們的需求. 下面貼出他的代碼.網絡

::::::::::::::::::::::::::::::::::::::::::::
:: Elevate.cmd - Version 4
:: Automatically check & get admin rights
::::::::::::::::::::::::::::::::::::::::::::
 @echo off
 CLS
 ECHO.
 ECHO =============================
 ECHO Running Admin shell
 ECHO =============================

:init
 setlocal DisableDelayedExpansion
 set cmdInvoke=1
 set winSysFolder=System32
 set "batchPath=%~0"
 for %%k in (%0) do set batchName=%%~nk
 set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
 setlocal EnableDelayedExpansion

:checkPrivileges
  NET FILE 1>NUL 2>NUL
  if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
  if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
  ECHO.
  ECHO **************************************
  ECHO Invoking UAC for Privilege Escalation
  ECHO **************************************

  ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  ECHO Next >> "%vbsGetPrivileges%"

  if '%cmdInvoke%'=='1' goto InvokeCmd 

  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  goto ExecElevation

:InvokeCmd
  ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
  ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"

:ExecElevation
 "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
 exit /B

:gotPrivileges
 setlocal & cd /d %~dp0
 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

 ::::::::::::::::::::::::::::
 ::START
 ::::::::::::::::::::::::::::
 REM 把你須要運行的腳本放到下面就能夠了

將咱們本身的代碼放到上面代碼的後面, 就以保證以管理員權限運行了測試

若是你也在尋找讓批處理自動以管員權限運行的方法, 那就試試吧.spa

關於EasyNVR

EasyNVR可以經過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具備RTSP協議輸出的設備接入到EasyNVR,EasyNVR可以將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),而且EasyNVR可以將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;scala

詳細說明:http://www.easydarwin.org/easynvr/code

點擊連接加入羣【EasyNVR解決方案】:383501345視頻

獲取更多信息

郵件:support@easydarwin.org ip

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

相關文章
相關標籤/搜索