沒有必要執行此步驟來執行您正在描述的任務,並且由於執行此步驟的各種原因不能確保任務成功。例如,憑據可能具有遠程計算機的權限,但可能存在防止其成功的安全軟件。
解決您的問題的方法是簡單地使用給定的憑據執行任務,並且檢查所有返回值。如果你得到STATUS_ACCESS_DENIED,它意味着它說什麼。如果你沒有得到任何錯誤,那麼你的工作就完成了。
檢查憑證將僅是有用的,以幫助用戶選擇適當的憑證。您也可以檢查是否可以訪問\\machine\admin$
分享作爲任何其他更復雜的檢查。
這就是說,這裏是如何做你問
如果憑據域憑據,你需要看看他們在Active Directory中。 ADSI對腳本很有幫助。其他API存在。獲取用戶組的列表。
然後,您需要使用NetXXX apis或ADSI WinNT提供程序連接到遠程計算機。獲取管理員組成員列表。如果用戶的任何域帳戶都是Administrators組的成員,則該用戶是成員。
這可以通過使用ADSI LDAP和WinNT提供程序的腳本完成。
誰想要運行遠程代碼
替代
似乎人人都認爲你必須寫一個服務可執行文件,安裝一個服務,然後啓動它。
如果您擁有管理員憑據,則替代方法非常簡單,那就是使用任務計劃程序服務。使用SCHTASKS.EXE
可以很容易地創建一個計劃任務,該任務的運行時間爲SYSTEM
,LOCAL SERVICE
,NETWORK SERVICE
或您擁有其憑證的任何帳戶。它可以在沒有計劃的情況下創建,然後明確啓動,或者使用「一次」計劃創建,以隨時隨地運行,例如在接下來的幾分鐘內。
如果您需要在遠程機器上運行代碼,我強烈建議SCHTASKS.EXE
不是服務方法。
來源
2011-04-15 11:41:25
Ben
這就是Active Directory API的意圖。 – 2010-10-19 14:09:24
我記得的場景與psexec類似 - 您獲得遠程計算機的憑證,您將遠程主機上的小型服務可執行文件複製到IPC $,將其配置爲遠程主機上的服務,啓動它並與您用來執行內容的服務建立通信。 這怎麼可能,所有這些都可以在不觸摸AD API的情況下完成,但爲了查詢適當的權限來執行此操作,我需要AD API? – radai 2010-10-19 14:16:26