2013-06-18 21 views
0

我有一個本地網站在我的工作地點運行,並且有幾個鏈接需要管理員權限才能打開它們。我想知道是否有辦法創建一個批處理文件來做到這一點?創建批處理腳本以打開提示輸入用戶名和密碼的文件?

最終用戶擁有管理員帳戶,但我希望當鏈接被點擊時會提示輸入用戶名和密碼。這可能嗎?

我有一個臨時解決方案這是: START%WINDIR%\ SYSTEM32 \ runas.exe /用戶:EMEA \ ACCOUNTNAME-%USERNAME% 「MMC%WINDIR%\ SYSTEM32 \ DSA.MSC」

這例如將打開AD,並且始終以EMEA \ ACCOUNTNAME-%USERNAME%運行。這也促使了一個完美的密碼。它只有一個缺陷 - 僅限於ACCOUNTNAME!團隊的新成員具有不同的帳戶名稱,因此無法識別密碼,因爲帳戶名稱不正確。

例如我的帳戶名稱爲「ACCOUNTNAME」,所以我單擊鏈接並打開DOS窗口並顯示「輸入EMEA \ ACCOUNTNAME-%MyUserName%的密碼」。這對我來說很好,但那個擁有不同AccountName的人呢?

注意事項:該網站只是基本的,沒有登錄選項,所以沒有辦法解決這個問題。

+0

你爲什麼不使用'/ user:%userdomain%\%username%'。您是否期望批處理文件從網站提供或者是批處理文件本地並運行http請求? – rene

+0

批處理文件由網站提供。所以無論用戶點擊鏈接打開AD在這種情況下都會被提示運行或保存。通常選擇運行,然後要求用戶輸入用戶名,並根據他們輸入的任何用戶名輸入密碼。看到我發佈的下面的答案! :) – user2317122

回答

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),都可以啓動任何應用程序作爲其帳戶名!

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 
+0

歡迎來到SO並感謝您的貢獻!我認爲,如果您在腳本中提供了一些上下文,您的答案將會受益。可能有其他人發現這篇文章想更好地瞭解它的使用方式以及它的功能。 – unitario

相關問題