通过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