首页 新闻 会员 周边 捐助

Windows服务调用bat文件不成功,求高手啊……

0
悬赏园豆:10 [已解决问题] 解决于 2014-03-24 11:19

bat文件用窗体程序来调用是没问题的。

 

但是写在windows服务中去调用的时候,就不行了……

服务是成功启动了的

服务的运行账户是localSystem

没有成功调用bat文件。

 

后来我右击服务。属性。将允许与桌面互动 打上勾,再重启服务,还是不行……

 

唉……这特么是怎么回事啊,服务是没有界面的,

是不是调用bat的时候,那个cmd的黑窗口也不会弹出来?

 

就算不会弹出来,悄悄在后台运行……那运行的结果是有日志记录的,

总之bat文件的确没有调用成功,也没有报异常……不知道是哪里出了问题。

 

请高手帮解决一下,谢谢~~

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2014-01-09 10:18
< >
分享
最佳答案
0

右击服务..属性,登录账户设置为超管就可以了.

hexllo | 菜鸟二级 |园豆:318 | 2014-03-24 11:18
其他回答(2)
0

你是怎么用bat的?

    /// <summary>
        /// 安装后自动启动服务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
        {
            //Process p = new Process
            //{
            //    StartInfo =
            //    {
            //        FileName = "cmd.exe",
            //        UseShellExecute = false,
            //        RedirectStandardInput = true,
            //        RedirectStandardOutput = true,
            //        RedirectStandardError = true,
            //        CreateNoWindow = true
            //    }
            //};
            //p.Start();
            //const string cmdString = "这里面写你需要批处理内容"; //cmd命令
            //p.StandardInput.WriteLine(cmdString);
            //p.StandardInput.WriteLine("exit");
        }
收获园豆:5
幕三少 | 园豆:1384 (小虾三级) | 2014-01-09 10:24
0

首先,如果是简单的BAT文件,干脆重写其中的逻辑。

其次,Windows的Session 0 隔离服务不鼓励你这种调用方式,不过,你仍可以利用函数“CreateProcessAsUser”来创建应用程序session下的进程,从而调用外部exe。http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg463353.aspx

最后,如果你要调试windows service,可以试着记日志,或用这里的方法断点调试:
http://www.cnblogs.com/downmoon/archive/2009/09/16/1567643.html

收获园豆:5
邀月 | 园豆:25475 (高人七级) | 2014-01-09 14:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册