解决windows登录samba共享无法切换用户的问题,附bat脚本

初始条件:

搭建好samba的服务器,可以连接使用。具备普通用户(只允许下载);具备管理用户(可以上传下载)

问题描述:

Windows中使用快捷组合件 win+r 输入地址共享文件地址 \192.168.XX.XX :
会提示输入账号密码,输入普通用户的账号密码即可登录。
存在的问题是当想切换到管理用户的时候的无法切换,因为window会生成一个默认的网络凭证链接,自动使用普通用户来登录,笔者在网上搜索了许多文档都无法彻底的解决这个问题。

问题解决思路:

1、Windows bat脚本获取administrator权限。
2、清除上次登录windows保存的凭证及相关信息。
3、重启LanmanWorkstation服务【非常重要】

bat脚本代码:

@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@echo off
echo 清除上次信息,请稍等......
net use
net use \\192.168.XX.XX\IPC$ /DELETE
::清除win保存的认证
klist purge
::m删除win保存的凭据管理器,delete:后面为你共享的地址
cmdkey /delete:192.168.XX.XX
echo 清除登录信息完成
@echo off
net stop LanmanWorkstation
net start LanmanWorkstation
start /max "" "\\192.168.XX.XX"

将192.168.XX.XX替换为搭建的samba服务器的地址即可,经过测试这个脚本可以很好的运行在windows的环境里面。

你可能感兴趣的:(系统运维)