大家好
要用AD派送批次檔到各電腦執行
批次檔內有修改登陸檔的部分
因為權限的問題被擋了下來
所以增加下面的程式碼用有權限的帳號執行
set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /profile /env /savecred /user:USER ""\\192.168..\test\test.bat"""
WScript.Sleep 1000
WshShell.Sendkeys "USER"
WshShell.Sendkeys "{ENTER}"
不過都會出現"1326: 登錄失敗: 未知的用戶名或錯誤密碼"
請問這會是甚麼原因造成的?
或是有甚麼其他的方法可以解決修改登陸檔權限問題
謝謝
AD上有沒有User這個帳號 , 有沒有設密碼 ?
我建議你.BAT跟AD不要放在同一台
這樣的話
你可以先用客戶端先跑看看有沒有問題
再針對問題解決
感覺你的問題不是出在AD
而是權限部分有問題
不知道樓主還會不會出現...
不過還是簡單回答一下好了
以你的問題來說,你使用了那段 script 來送帳號密碼,但是在 WshShell.Sendkeys 這邊,如果剛好遇到使用者的環境有預設中文輸入法的狀況或是其它各種狀況,可能會導致你送進去視窗的字元就會變成其他的字,大寫的英文字還沒甚麼問題,但小寫的字元、數字等等很可能就會變成了注音符號或是中文字等等,然後就可能造成密碼錯誤的狀況。
以上大致是密碼錯誤的可能狀況。
其次是你使用了 script 來輸入密碼,也會造成密碼外洩的狀況,不管是BAT還是VBS之類的,明碼的 script 因為可以很簡單的就看到密碼,所以這個部份我會建議利用例如 AUTOIT 之類的東西來做,可以避免密碼外洩的狀況發生。
以下來談談派送的權限這件事情。
不知道你是用 AD 中的哪個部份來派送BAT?
使用者帳號中的登入指令檔?
GPO中的指令碼?
而你要改的登錄檔的位置又是在哪裡?
如果是利用使用者的登入指令檔以及GPO的使用者設定中的指令碼來做,他是會以使用者的權限去執行,所以當你有限制使用者的權限時,很可能就會遇到權限不足的狀況。
而 GPO 的電腦設定中的指令碼,則是會在使用者未登入時就執行,因此是會以 SYSTEM 權限來執行,所以比較不會遇到權限不足的狀況,當然也可以變更登錄檔中的資料,不用特別用甚麼使用者身分來跑,除非你要改的是位於 HKEY_CURRENT_USER 中。
如果不是位於 HKEY_CURRENT_USER 中,那麼只要利用 GPO 的電腦設定中的指令碼來派送你的 BAT 即可。
如果是位於 HKEY_CURRENT_USER 中,我是會利用 AUTOIT 的 runas 來做,或者利用例如 advanced installer 之類的工具建立 MSI 來派送,給你參考。
Advanced installer 用免費授權的就可以了。 請參考 http://www.advancedinstaller.com/feats-list.html