從服務存取應用程式桌面

文章翻譯 文章翻譯
文章編號: 115825 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

結論

在 Windows NT 版本 3.1 下, 如果您想要能夠存取應用程式的桌面服務您必須執行服務 LocalSystem 帳戶中。以 LocalSystem 帳戶 (或從這類服務啟動處理程序) 執行的服務處理序可以顯示訊息方塊、 視窗及對話方塊。 在 LocalSystem 帳戶中執行的處理程序不都在登出時,由系統來終止的。對 Windows NT,版本 3.5,會影響 Windows NT 與這些服務互動的方式所做的變更數目。 在另外 Windows NT 3.51 都有更豐富的桌面 API 一組。

注意: 執行系統帳戶下的互動服務是一個特別危險的練習。是特別如此命令處理器和批次檔。想要控制系統的使用者只可以叫用 CTRL + C 來取得互動式系統命令提示字元。

其他相關資訊

以下列出的 Windows NT 版本 3.5,影響服務的新功能:
  • 登入的使用者帳戶是唯一帳戶授與存取權的應用程式桌面。[LocalSystem 不再具有的存取。 因此,可能會藉由模擬使用者,讓任何使用者或 GDI 呼叫之前取得到桌面的存取。
  • 主控台和 GUI 應用程式特定的登入工作階段期間從服務處理序啟動不可見的視窗工作站及對該工作階段都是唯一的桌上型電腦上執行。視窗工作站及桌面會自動建立工作階段中的第一個應用程式啟動時 ; 它們會被摧毀最後一個應用程式結束時。沒有任何方法,讓這些不可見的桌上型電腦能夠被看見。
  • 如果您要以中 localsystem 帳戶來登入使用者的互動服務,請 CreateService() 呼叫中指定 SERVICE_INTERACTIVE_PROCESS 旗標。例如:
          schService = CreateService(
             schSCManager,
             serviceName,
             serviceName,
             SERVICE_ALL_ACCESS,
             SERVICE_INTERACTIVE_PROCESS | SERVICE_WIN32_OWN_PROCESS,
             SERVICE_DEMAND_START,
             SERVICE_ERROR_NORMAL,
             lpszBinaryPathName,
             NULL,
             NULL,
             NULL,
             NULL,
             NULL );
    						
    如果使用 SERVICE_INTERACTIVE_PROCESS 時,您可以指定 localsystem 以外的其他帳戶,您會收到錯誤 INVALID_PARAMETER (87)。
  • 如果您使用 CreateProcess() 來啟動您的處理程序,而您想您登入使用者桌面的服務,指派 STARTUPINFO 結構與 WinSta0\\Default"lpdesktop 參數。
  • 只需要顯示使用者通知的服務可以這樣做,即可呼叫 MessageBox() MB_SERVICE_NOTIFICATION 旗標。使用 MB_DEFAULT_DESKTOP_ONLY 旗標同時也運作但僅如果使用者的桌面是作用中。如果工作站已鎖定,或螢幕保護裝置正在執行時,呼叫就會失敗。

    注意: 如果您撰寫的可為一個服務或可執行檔執行的應用程式的程式碼,您不能使用 MB_SERVICE_NOTIFICATION,以及非 NULL hwndOwner。
  • 為了在視窗的任何輸出不顯示或以任何方式可在應用程式。嘗試讀取從失敗中顯示結果的位元。
  • GUI 服務並不會收到在登出和關機 WM_QUERYENDSESSION/WM_ENDSESSION 訊息 ; 而,他們收到 CTRL_LOGOFF_EVENT 和 CTRL_SHUTDOWN_EVENT 事件。在登出系統無法終止這些服務。

屬性

文章編號: 115825 - 上次校閱: 2014年3月1日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft Win32 Application Programming Interface?應用於:
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
關鍵字:?
kbnosurvey kbarchive kbmt KB115825 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:115825
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com