首页 新闻 搜索 专区 学院

Window服务启动外部exe程序 在Server 2003,2008 启动不了,Windows7可以

0
悬赏园豆:100 [已关闭问题] 关闭于 2013-05-13 17:03

本来在Windows 7 上面不行,后面在网站查了资料,说Windows7把那个功能禁用了,后面解决后,放到服务器上就启动不了,但是在Windows7上可以。

服务里面的属性 设置 界面交互式   设置过了,没有效果。

Windows服务代码:

// Onstart 方法里面的全部代码    这段代码 就是可以Window7 上启动外部程序的代码,放入服务器就不行了(2003,2008)

try             {

                appStartPath = @"D:\source\166\课程中心3.0\Tools\ACCService\ACCService\ACCService\bin\Debug\ACCService.exe";  //外部程序路径               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,                     appStartPath,                     "",                     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(string.Format("Start Application failed, its path is {0} ,exception: {1}", appStartPath, ex.Message));             }         }

Miracle_Yang的主页 Miracle_Yang | 初学一级 | 园豆:10
提问于:2013-01-12 22:22
< >
分享
所有回答(8)
0

检查外部程序的路径是否正确,单独打开外部程序确保依赖的dll文件都在

az235 | 园豆:8283 (大侠五级) | 2013-01-13 09:04

路径 是正确的。我单独拿路径出来运行过。而且我的项目是拷贝过去的。   单独都是能运行的

支持(0) 反对(0) Miracle_Yang | 园豆:10 (初学一级) | 2013-01-13 09:54
0

难道是权限的问题?

还有楼主以后你不要这样贴你的代码,

编辑器中最后有个插入代码的按钮。用它

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-13 13:57
0

在你没解决 Window 7 上无法启动之前,是否能在2003,2008上启动?

如果是,你就在启动前判断一下操作系统版本,非Windows 7 的时候还是用原来的代码启动。

Launcher | 园豆:45045 (高人七级) | 2013-01-14 09:09

不行。一开始就是在2003,2008上面先试的,后面经理 叫我解决,我的电脑是Windows7 ,在我的电脑上解决后,服务器了还是解决不了。

支持(0) 反对(0) Miracle_Yang | 园豆:10 (初学一级) | 2013-01-14 22:55

@WindowsPhone程序员: 你这样测试下,用 Process.Start 启动一个外部程序,在服务上设置为“本地系统帐户”和"允许服务与桌面交互",记得在Windows 2003 上测试。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-01-15 09:14
0

session0的问题吧

至于什么是session0 google下

我记得msdn上有文章的

Edwin Tai | 园豆:212 (菜鸟二级) | 2013-01-14 09:14
0

在服务的属性的登录选项卡中,把允许服务与桌面交互勾选上,再试试。

HOH | 园豆:44 (初学一级) | 2013-01-14 09:51

这个试了 很多次了  不行

支持(0) 反对(0) Miracle_Yang | 园豆:10 (初学一级) | 2013-01-14 22:52
0

我以前也是遇到这个问题,但是跟楼主不同的是我的在Win7上不行,在Server2003上可以,这里的不行和行指的是Windows服务启动外部程序这个外部程序如果是有Ui界面的话在Win7上回弹个框框出来需要手动确认还只能在一个全屏的界面中运行此程序,在Server2003上就直接启动了,最后也没找出有效的解决办法。

LowerAI | 园豆:562 (小虾三级) | 2013-01-14 23:00

你在 Window7 上 我用我发的代码 就可以用      Window7 禁用了某个功能   用我发的代码 就应该可以

支持(0) 反对(0) Miracle_Yang | 园豆:10 (初学一级) | 2013-01-15 12:01

你在 Window7 上 我用我发的代码 就可以用      Window7 禁用了某个功能   用我发的代码 就应该可以

 

你顺便把你的 代码 发给我   还有  步骤  呵呵

支持(0) 反对(0) Miracle_Yang | 园豆:10 (初学一级) | 2013-01-15 12:02
0

heihei 

Miracle_Yang | 园豆:10 (初学一级) | 2013-04-09 16:31
0

你好,你的这个问题解决了么?我也遇到了相同的问题!回复一下啊!

Regen | 园豆:202 (菜鸟二级) | 2015-02-04 12:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册