上一篇:windows mysql服务自动启动 错误模块名称:ntdll.dll_csdn_aspnet的博客-CSDN博客
根据上一篇文章进行手动启动mysql服务补充,由于演示机器系统安装的为win11家庭版,为了安全起见,在项目演示期间,避免数据库使用过程中或开机启动mysql服务启动失败 ,编写一个bat脚本,bat文件命名按照自己习惯即可:
net start mysql8
将以上命令存储为mysql.bat,其中mysql8为服务名:
但是在自己机器上直接以管理员身份运行没有问题,偶尔在win11家庭版演示机器上会出现没有权限,于是再一次编写自动获取管理员权限,可直接双击运行,代码如下:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
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" )
net start mysql8
pause;
直接执行后,一闪而过,其实是成功了,想给出提示,并允许cmd命令界面停留几秒后关闭:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
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" )
net start mysql8023
@echo off
echo 本Dos窗体将在5秒后自动关闭
echo if wscript.arguments(0)^>0 then wscript.Sleep(wscript.arguments(0) * 1000):end if>"%Temp%\delay01.vbs"
cscript "%temp%\delay01.vbs" 5
del "%Temp%\delay01.vbs"
测试直接双击执行后发现,此句:echo 本Dos窗体将在5秒后自动关闭 输出的中文乱码:
于是添加一行编码转换,最终代码如下:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
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" )
net start mysql8023
@echo off
chcp 65001
echo 本Dos窗体将在5秒后自动关闭
echo if wscript.arguments(0)^>0 then wscript.Sleep(wscript.arguments(0) * 1000):end if>"%Temp%\delay01.vbs"
cscript "%temp%\delay01.vbs" 5
del "%Temp%\delay01.vbs"
再次测试直接双击运行后界面如下:
这样,就不需要再右键以管理员身份运行了。