2013-08-04 176 views
8

如何從另一個文件啓動/調用批處理文件,但具有管理權限,以便它不會給我出現如下錯誤?如何在批處理文件中以管理員權限啓動程序

訪問被拒絕錯誤代碼5

這裏是像我想的那樣。

echo PLEASE TYPE YOUR USERNAME AND PASSWORD IN THE FIELDS BELOW. 
echo. 
echo. 
echo. 
echo. 
set /p u=Username: 
echo. 
set /p p=Password: 
start next.bat %u% %p% 
+0

使用'runas'命令。 –

+0

@a_horse_with_no_name請你詳細說明一下,我做了'runas /?',並且語法沒有顯示如何在不提示的情況下提供密碼。 – cmd

+0

[批處理腳本以管理員身份運行](http://stackoverflow.com/questions/14639743/batch-script-to-run-as-administrator) – Endoro

回答

1

右鍵單擊 - >以管理員身份運行。

我認爲微軟已盡其所能地阻止批處理腳本自行獲取管理權限。

+1

@ jean-Michael_Celerier謝謝你,但我希望在批處理本身內完成。 – cmd

+0

@cmd你是否看到了安全漏洞?任何人都可以創建一個隨機批處理腳本並格式化爲c:... –

+1

並不是真的,因爲他們仍然需要提供密碼。當你以管理員身份手動運行,或將其固定到任務欄,然後將其編輯爲始終以admin身份運行(如我的cmd.exe),則不需要管理員密碼,只需單擊yes按鈕或更改設置後只需點擊圖標。 @ jean-Michael Celerier – cmd

2

有時候第三方實用程序AutoIt(請參閱runas函數)不是一個選項 - 但如果您確實有這個選項,請檢查它,因爲它可以讓您完全按照您的要求進行操作。然後,您可以從腳本調用AutoIt腳本並使用其runas函數。

Windows runas不支持提供密碼,除非您對/savecred選項感到滿意 - 如果您只從一臺計算機運行任務,那麼這很好。第一次它會要求你輸入密碼,但之後它不會(儘管你每次使用它都必須使用/savecred選項)。我有一種感覺,使用這可能是一個巨大的安全漏洞。但是,因爲它看來,這是你自己的機器,在批處理使用:

runas /user:computername\username /savecred yourcommand.exe 

另一種方法是使計劃任務,可以通過你的腳本中調用。您可以使用GUI或從命令行提升爲described here

然後,您可以從您的腳本中調用它像這樣:

SCHTASKS /Run /TN yourtaskname 
2

簡而言之bat文件到Windows目錄下,它會以管理員身份運行。我自己試了一下,結果如下:

C:\Windows\batch_file.bat 

它應該這樣工作。

+0

這對我來說也是一樣,很好的留言。 – Alex

2

在批處理文件本身中,無法以管理員身份運行,但是如果從.VBS文件啓動批處理文件,則可以指定'runas'參數。

set shell=CreateObject("Shell.Application") 
shell.ShellExecute "your_batch_file.bat",,"C:\path\to\thedirectory", "runas", 0 
set shell=nothing 

這將啓動您的批處理文件作爲管理員,您可以啓用或禁用外殼顯示(本例中隱藏它,因爲我想我的程序在後臺而不被發現運行)。

1

不管你選擇哪種方式,你必須接受以管理員權限運行它,所以問題是哪個方法更短?你可以Right Click > Run as administrator作爲吉安邁克爾表示,雖然我更喜歡詹姆斯方法(使用vbScript),但如果你不想使用另一個VBScript文件,只是想點擊批處理文件的好處,並接受以管理員權限運行(注意:您有一個正確的點擊左鍵點擊以下),我建議你:

快捷方式創建批處理文件並右鍵單擊快捷方式>屬性>快捷方式選項卡>高級現在檢查以管理員身份運行入住方框。每次你從快捷方式執行它,你只需點擊一下,接受運行管理員權限。

希望得到這個幫助。

相關問題