2014-03-28 102 views
0

我有一個批處理文件,我想用管理權限執行。我創建了一個VBScript文件使用此代碼來啓動以admin:當我雙擊我的VBS在XP中ShellExecute路徑錯誤 - 找不到文件

Set UAC = CreateObject("Shell.Application") 
UAC.ShellExecute "mybat.bat", "", "", "runas", 1 

,它拍攝了一個錯誤:

Windows cannot find bat

,我嘗試:

Set UAC = CreateObject("Shell.Application") 
UAC.ShellExecute "<path>\mybat.bat", "", "", "runas", 1 

and

Set UAC = CreateObject("Shell.Application") 
UAC.ShellExecute "mybat.bat", "", "<path>", "runas", 1 

這些都沒有工作..什麼都沒有發生。

這在Windows 7+上運行得很好,但在Windows XP上似乎沒有任何作用。我在2004年發現了一篇關於這個背景的已知問題的文章,但那是在Sp1中,而且我有Sp3,所以應該修復它。

我把路徑目錄放入環境變量中,但是當我啓動vbs時,它什麼也不做。命令窗口甚至不會彈出。如果沒有指定的目錄,我認爲工作目錄是相對的。

有什麼我可以做,以管理員身份啓動我的蝙蝠文件,或無論如何解決這個VBScript的問題?

回答

1

XP中沒有runas動詞。這是有道理的,因爲XP中也沒有UAC。

在XP中,您通常會使用動詞open,並期望用戶成爲管理員。如果用戶不是管理員,那麼您需要使用runas命令行工具以管理員用戶身份運行新的cmd進程。這將要求您知道管理員用戶名和密碼。所以最好留給用戶處理。

因此,結論是您應該在Vista和更高版本中使用runas動詞,而XP和更低版本應使用open動詞。

+0

+1很酷的信息,有沒有關於這個「動詞」差異的任何文檔? – Rich

+0

@很抱歉,我不確定。 ShellExecuteEx文件是一個可能的來源,但是IIRC他們沒有提到runas。 –

1

RunAs在XP中。它允許你選擇使用哪個用戶帳戶(在Vista中升級)。