通過Windows Service啟動外部程序


在WinXP和Win2003環境中,安裝服務后,右鍵單擊服務“屬性”-“登錄”選項卡-選擇“本地系統帳戶”並勾選“允許服務與桌面交互”即可.

在Win7環境中,由於微軟加強了權限管理,將此功能禁用,需要引用第三方dll

Cjwdev.WindowsApi.dll

Cjwdev.WindowsApi.xml

dll下載鏈接:http://pan.baidu.com/share/link?shareid=159544&uk=3288736938

        private void StartApp(string strAppPath)
        { 
            try 
           {
               IntPtr userTokenHandle = IntPtr.Zero; 
               ApiDefinitions.WTSQueryUserToken(ApiDefinitions.WTSGetActiveConsoleSessionId(), ref userTokenHandle);

               ApiDefinitions.PROCESS_INFORMATION procInfo = new ApiDefinitions.PROCESS_INFORMATION(); 
               ApiDefinitions.STARTUPINFO startInfo = new ApiDefinitions.STARTUPINFO(); 
               startInfo.cb = (uint)Marshal.SizeOf(startInfo);

               ApiDefinitions.CreateProcessAsUser( 
                   userTokenHandle, 
                   strAppPath, 
                 “”, 
                   IntPtr.Zero, 
                   IntPtr.Zero, 
                   false, 
                   0, 
                   IntPtr.Zero, 
                   null, 
                   ref startInfo, 
                   out procInfo);

               if (userTokenHandle != IntPtr.Zero) 
                   ApiDefinitions.CloseHandle(userTokenHandle);

               _currentAquariusProcessId = (int)procInfo.dwProcessId; 
           } 
           catch (Exception ex) 
           { 
                MessageBox.Show(ex.Message); 
           }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM