我想使用Process類執行批處理文件。此代碼位於使用LogonUser()和WindowsIdentity.Impersonate()模擬本地PC管理員帳戶的大部分代碼中。System.Diagnostics.Process不接受憑據
我正在嘗試在Process中運行批處理文件,但沒有在ProcessStartInfo中添加憑據,但是這樣做會導致批處理文件無提示失敗 - 沒有發生錯誤,並且批處理文件的預期輸出從未返回(我正在異步閱讀stderr和stdout,fwiw)。
然後我將憑據添加到ProcessStartInfo,但現在如果我不首先調用WindowsImpersonationContext.Undo(),並且出現「登錄失敗:未知用戶名或密碼錯誤」錯誤,現在我得到「Access is denied」錯誤在Process.Start()之前調用.Undo()。我已經三重檢查了多個帳戶的用戶名/密碼/域是否正確。
如果我的代碼沒有LogonUser()或WindowsIdentity.Impersonate()調用(並且ProcessStartInfo中沒有憑據),那麼我沒有遇到批處理文件執行和捕獲批處理文件輸出的問題。
我能夠成功地從桌面運行批處理文件,無論是本地管理員還是任意本地用戶帳戶。我可以看到它的權限表明它應該是可讀/可執行的,我試圖運行它。這真的很有趣,任何幫助表示讚賞。