Tôi muốn chạy một tệp bó trên một máy tính từ xa có chung một thư mục nhất định với mọi người. Nó phải làm điều này
- mà không yêu cầu quyền quản trị theo bất kỳ cách nào
- mà không bật lên hộp thoại UAC
- không khởi động lại
Cho đến nay tôi có kịch bản này, nhưng nó vẫn đưa cho tôi hộp thoại UAC.
SET __COMPAT_LAYER=WINXPSP3
if _%1_==_payload_ goto :payload
:getadmin
echo %~nx0: elevating self
set vbs=%temp%\getadmin.vbs
echo Dim WshShell, WshEnv >> "%vbs%"
echo Set WshShell = CreateObject^("WScript.Shell"^) >> "%vbs%"
echo Set WshEnv = WshShell.Environment^("PROCESS"^) >> "%vbs%"
echo WshEnv.Item^("__COMPAT_LAYER"^) = "WINXPSP3" >> "%vbs%"
echo Set UAC = CreateObject^("Shell.Application"^) >> "%vbs%"
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
goto :eof
:payload
echo %~nx0: running payload with parameters:
echo %*
echo ---------------------------------------------------
cd /d %2
shift
shift
rem put your code here
rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
SET __COMPAT_LAYER=WINXPSP3
net share MyShare=c:\MyShare /grant:everyone,full
goto :eof
:getadmin
vào tập lệnh VBS thực tế với các giá trị tĩnh và khắc phục sự cố để bắt đầu. Đây có thể là một vấn đề với VB Script và không thực sự hàng loạt vì vậy nếu bạn có thể tạo VB Script và làm cho các giá trị tĩnh để xác nhận nó có hành vi tương tự, thì bạn có thể nhận trợ giúp tốt hơn bằng cách đưa logic vào VB vào bài đăng này và gắn thẻ nóvbscript
. Các phần hàng loạt có thể không liên quan đến vấn đề thực tế để có thể khiến mọi người mất tập trung và không cần thiết để khắc phục sự cố của bạn. Chỉ là một mẹo thân thiện có thể giúp !!