跑這裏是另一種選擇:
wmic /user:username /password:pass process call create "cmd /c \"d:\\path\\to\\program.exe\" /arg etc"
編輯:顯然是沒有按在本地機器上不允許使用單獨的憑證進行身份驗證。
有一種方法可以用vbscript調用runas
,並讓vbscript將密碼發送到控制檯以自動輸入密碼。
set WshShell = WScript.CreateObject("Wscript.Shell")
WshShell.run "runas /noprofile /user:USERNAME " + Chr(34) + "d:\path\to\command.exe /args" + Chr(34)
WScript.Sleep 500
WshShell.SendKeys "PASSWORD"
WshShell.SendKeys "{ENTER}"
set WshShell = nothing
保存是一個.vbs
文件,如果你需要的是從一個批處理腳本運行,只是做一些有創意的回聲通過cscript /nologo script.vbs
調用它。
@echo off
setlocal
set username=username
set password=password
set program=d:\path\to\program.exe /arg argument
echo set WshShell = WScript.CreateObject(^"Wscript.Shell^")>runas.vbs
echo WshShell.run ^"runas /netonly /noprofile /user:%username% ^" + Chr(34) + ^"%program%^" + Chr(34)>>runas.vbs
echo WScript.Sleep 500>>runas.vbs
echo WshShell.SendKeys ^"%password%^">>runas.vbs
echo WshShell.SendKeys ^"{ENTER}^">>runas.vbs
echo set WshShell = nothing>>runas.vbs
cscript /nologo runas.vbs
del /q runas.vbs
如果不爲你工作,你也可以使用psexec運行具有不同的憑據的程序。
psexec -u USERNAME -p PASSWORD d:\path\to\command.exe
我能想到的唯一的其他替代方法是通過組策略啓動腳本運行腳本,它將從系統帳戶執行腳本。我也想過從註冊表的HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
中調用它,但我認爲可以從第一個重啓後登錄的用戶啓動它。
看來WMI引擎不允許您使用憑據在本地連接。在錯誤消息中執行上述結果: '用戶憑證不能用於本地連接' 有沒有辦法解決這個問題? – fatbear 2013-02-14 15:10:15
你可以嘗試添加'/ node'參數。 'wmic/node:computername/user:adminuser/password:password process call create「cmd/c \」d:\\ path \\ program.exe \「」**編輯**:不行,這不起作用無論是。讓我玩一下,看看我能想出什麼。 – rojo 2013-02-14 15:12:01
我只是嘗試添加/節點,並嘗試爲計算機名稱完全合格和短的主機名,但我仍然收到上述相同的錯誤消息。感謝這個想法...我還有其他什麼可以嘗試的嗎?剛剛看到你的編輯......感謝你,無論發生什麼事情! – fatbear 2013-02-14 15:16:44