window serives(c#) 中訪問網路資源

來源:互聯網
上載者:User

 

 最近用c#寫了一個window services,利用 installutil.exe註冊成功以後,就開始測試了.
 程式碼我就不列出來了,我的這個 window service 中利用水晶報表的 PrintToPrinter(),進行資料的列印,當然這裡的印表機是網路印表機.服務一啟動,發現印表機並沒有正常的進行列印,查看日誌 
"指定的印表機無效。"!難道網路地址不對,或者是其他的代碼出現問題,仔細檢查以後,測試!問題依然存在.
 於是將所有的列印代碼,複製到一個winform程式中,運行....一切正常,印表機正常列印.
 初次遇到這個問題,想想:難道服務中的不能找到映射出的網路,或者說沒有許可權訪問網路資源!
 開啟工作管理員:

  印象名稱          使用者名稱
 winform(test)  系統登陸時候的使用者名稱.
 window service   system

所以猜想問題就出在這裡,對於網路資源,或者說網路伺服器,只認識你的當前登陸的使用者,而對於system則拒絕訪問.
雖然本地來說system的許可權很高,但是對於訪問網路來說,則不相同.
 於是想到一段代碼:(install 類裡面)
                

   this.spInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
            this.spInstaller.Password = null;
            this.spInstaller.Username = null;

 將上述代碼改為:
        

this.spInstaller.Account = System.ServiceProcess.ServiceAccount.User;
            this.spInstaller.Password = "pwd";
            this.spInstaller.Username = @"機器名\登陸名";

然後將服務卸載以後,重新註冊,一切正常!
後面又發現其實上面的代碼無須更改,可以在服務註冊成功之後,在管理的服務中找到註冊的服務,然後右鍵屬性-登陸,把其中的賬戶修改為你的登陸賬戶,然後啟動服務,同樣也可以訪問.
                                    

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.