網頁

2024年2月5日 星期一

vmware workstation 虛擬機無法使用USB裝置解決方法

正常情況,vmware workstation 建立虛擬機,預設有UAB,如發生虛擬機開機後,插入USB隨身碟,虛擬機右下角看不到USB圖示。

開始->所有應用程式->windows 工具->服務->找到 VMware USB Arbitration Service,沒顯示 執行中

點入VMware USB Arbitration Service,顯示 服務狀態 已停止。->按 啟動

VMware USB Arbitration Service  服務狀態 執行中

狀態 執行中

虛擬機右下角看到USB圖示了。

如電腦重開機 VMware USB Arbitration Service  服務狀態 仍保持 執行中,問題就解決了。
但實測,電腦重開機 VMware USB Arbitration Service  服務狀態 已停止。
手動啟動較麻煩,這時候就須將啟動VMUSBArbService指令檔,加入開機自動執行的資料夾,讓電腦一起動,就啟動VMUSBArbService。
開啟檔案總管->  · · ·  ->選項

->檢視->點選 顯示隱藏的檔案、資料夾及磁碟機。->套用->確定。

因net start "VMUSBArbService" 須以系統管理員身分執行,指令前加入Running Admin Shell,讓net start "VMUSBArbService" 以系統管理員身分執行。
因C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup資料夾,無法新增檔案,要在別的資料夾先建立vmusb.cmd檔,再複製到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup資料夾。
開啟記事本,將以下內容存為vmusb.cmd。
@echo off
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
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%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

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

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
net start "VMUSBArbService"
exit

將vmusb.cmd複製到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup資料夾,電腦一開機,自動以系統管理員身分執行 net start "VMUSBArbService"。

實作的過程,發現vmware workstation 虛擬機無法使用USB裝置,會發生在使用者用administrator帳戶登入的電腦,如以一般最常用的user帳戶登入,則VMware USB Arbitration Service  服務會自動啟用,USB裝置能正常使用。
如作業系統是windows server,安裝vmware workstation ,VMware USB Arbitration Service  服務會自動啟用,USB裝置能正常使用。






沒有留言:

張貼留言