2012-07-16 43 views
2

我有一個程序需要管理權限,我想從批處理文件運行。我可以通過命令行運行哪些命令,並使用管理權限運行我的程序?彈出式窗口要求許可,我沒事。此外,該文件需要能夠從計算機上的任何位置運行,以便從./src運行其他文件。問題是,如果我右鍵單擊並選擇「以管理員身份運行」,它會更改我的當前目錄,因此./src不再有效。如果我在我的機器上禁用UAC,那麼一切運行良好。謝謝!從win7上的命令行,我如何以管理員身份啓動一個進程,使用提升的UAC

+1

'runas'是否符合法案? – wmz 2012-07-16 20:11:54

+0

爲什麼不將路徑更改回批處理文件位置?前'pushd'%〜dp0'' – jeb 2012-07-17 06:46:49

+0

可能重複[如何自動提升我的批處理文件,以便它從UAC管理員權限請求?](http://stackoverflow.com/questions/7044985/how - 可以-I自動提升 - 我 - 批處理文件那麼這-IT-請求 - 從-UAC管理員權限) – parvus 2014-07-29 09:26:17

回答

0

這很困難,微軟沒有提供這樣做的實用程序(主要是因爲給出了一個能夠破壞安全的批處理文件),除了RunAs,並且需要激活管理員帳戶。

有一個JScript程序可以執行類似的操作,使用SendKeys打開開始菜單並鍵入cmd [CTL] + [SHIFT] + [ENTER]將啓動命令行shell。

以下內容作爲作爲.js文件,像StartAdmin.js:

var WshShell = WScript.CreateObject("WScript.Shell"); 
WshShell.SendKeys("^{esc}cmd^+{ENTER}"); The equivilent of [CTRL]+[ESC] cmd [CTRL]+[SHIFT]+[ENTER] 

從批處理文件運行StartAdmin.js,你需要下面一行:

wscript StartAdmin.js 

要從特定目錄啓動並啓動批處理文件,將StartAdmin.js中的第2行更改爲類似於:

WshShell.SendKeys("^{esc}cmd /C "cd %userprofile% & batchfile.bat"^+{ENTER}"); 

/C開關告訴它運行命令,然後關閉命令行窗口。
/K會在命令窗口退出批處理文件後保持打開狀態。
爲了幫助您瞭解的SendKeys命令:

+=[Shift Key] 
^=[Control Key] 
{esc}=[Escape Key] 
{enter}=[Enter Key] 

要了解更多關於使用CMD.EXE,鍵入CMD /?在命令提示符處。

這是一個非常不整潔和醜陋的方式來做到這一點,但它是我知道如何只使用Windows附帶的工具的唯一方法。

相關問題