none
ProcessStartInfo 呼叫bat檔 使用者權限問題? RRS feed

  • 問題

  • 因為程式需要跨server呼叫BAT檔

    需要使用網路位置 EX.\\192.168.99.99\$D\...

    原本程式寫法為

    ProcessStartInfo Info2 = new ProcessStartInfo();
    
    Info2.FileName = "123.bat";//執行的檔案名稱
    
    Info2.WorkingDirectory ="\\192.168.99.99\$D:\AA\bat" //檔案所在的目錄
    
    Process.Start(Info2);

    程式放到server上後發現使用預設的user權限程式有些部分無法執行

    (bat檔是可以被呼叫的 ,但bat檔中有些需要做跨server轉移或儲存圖片時或出現例如 "SavePic 在 GDI+ 中發生泛型錯誤。"  的錯誤)

    所以只好把程式更改成

    ProcessStartInfo Info2 = new ProcessStartInfo();
    
    Info2.FileName =\\192.168.99.99\$D:\AA\bat\123.bat ;//執行的檔案名稱
    Info2.UseShellExecute = false;
    Info2.UserName = "user";
    Info2.Password = ConvertStringToSecureString("123");//密碼
    Info2.Domain = "domain";
    
    Process.Start(Info2);

    一開始我故意將filename 打錯檔名 會出現找不到檔案的錯誤

    所以我相信這個權限帳號應該是正確的是可以登入的

    但更改回正確檔名後程式執行上是沒有出現任何錯誤的

    她成功的跑完

    Process.Start(Info2);

    可是bat卻完全沒有執行 也沒有任何錯誤(前面第一次的寫法bat還可以執行但改完後卻變成完全沒反應)

    但我使用這個帳號登入server直接雙擊執行bat是可行的

    這個問題困擾我很久了也上網查了很就似乎還是無解 

    還請各位高手賜教

    小妹第一次發文,有什麼不對的地方還請多包涵

    2018年8月30日 上午 11:11

所有回覆

  • 有試過從 Server 的紀錄查詢是不是有從 Server 存取過嗎?

    本機透過檔案總管是否可正確執行?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年8月30日 下午 02:31
  • 有試過從 Server 的紀錄查詢是不是有從 Server 存取過嗎?

    本機透過檔案總管是否可正確執行?


    請問要如何從server 上察看紀錄查詢?我在批次檔的開始和結束的時候有寫入log,但我執行後去察看的時候是連開始的log都沒有 本機透過檔案總管連過去無法執行批次 ,權限不足...所以才在程式內使用此帳號不然就是要打包程式上server才能測試...
    • 已編輯 PGBeginner 2018年8月30日 下午 03:16
    2018年8月30日 下午 03:14
  • 有在Bat檔案中處理執行的錯誤並記下錯誤訊息嗎? 像這樣:

    Batch File Success and Error logging

    2018年8月31日 上午 12:29
  • 這要看你 Server 是哪種。

    Windows Server 要有紀錄的話要開網路芳鄰的稽核。

    系統管理工具 電腦管理 共用資料夾 開啟階段

    可以看即時值。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年8月31日 下午 03:45