我在我的工作场所运行了一个本地网站,并且有一些链接需要管理员权限才能打开它们。我想知道是否有办法创建批处理文件来执行此操作?
最终用户拥有管理员帐户,但我希望在点击链接时会提示输入用户名和密码。这可能吗?
我有一个临时解决方案: START%windir%\ system32 \ runas.exe / user:EMEA \ ACCOUNTNAME-%USERNAME%“mmc%windir%\ system32 \ dsa.msc”
例如,这将打开AD,并始终作为EMEA \ ACCOUNTNAME-%USERNAME%运行。这也提示了一个完美的密码。它只有一个缺陷 - 它仅限于ACCOUNTNAME!团队的新成员拥有不同的帐户名称,因此无法识别密码,因为帐户名称不正确。
例如我的帐户名是“ACCOUNTNAME”,因此我点击该链接,它会打开一个DOS窗口并显示“输入EMEA \ ACCOUNTNAME-%MyUserName%的密码”。这对我来说没问题,但是那个拥有不同AccountName的人呢?
需要注意的事项:该网站只是基本网站,没有登录选项,因此无法以这种方式解决此问题。
答案 0 :(得分:2)
以下是打开Active Directory的答案:
@echo off
set var=Please Enter the Account name you use here:
set /p USERID= %var%
START %windir%\system32\runas.exe /user:%USERID% "mmc %windir%\system32\dsa.msc"
所以基本上,无论输入是什么并将其存储在“var”中。然后“set / p”接受用户输入,因此我们将该变量设置为var。 (USERID =%var%)
启动您想要的任何应用程序(在本例中为AD),无论用户输入什么作为其帐户名称!
答案 1 :(得分:0)
:----------------------------------------------------------------------------------------------------------------------
@echo off
cls
: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 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)
:----------------------------------------------------------------------------------------------------------------------
@echo off
set var=Please Enter the Account name you use here:
set /p USERID= %var%
%windir%\system32\runas.exe /user:%USERID% "cmd /c mmc %windir%\system32\dsa.msc"
ping 127.0.0.1
taskkill /f /im cmd.exe
exit /b n