C#服务不会写文件,没有错误

时间:2013-02-09 00:34:56

标签: c# service

编辑:

好的,截至目前,通过无数的帖子,我已经找到了一个解决方案,我不能做我需要做的服务,我希望它是一个服务,所以它将始终是计算机,但显然与服务的编写方式,我可能无法运行我想运行的命令,因为“该服务不在与用户桌面相同的空间运行”,因此它将无法捕获桌面,至少,那就是我到目前为止收集的内容。

至于现在,我将把它留在这里,也许找到一种方法,在用户登录时以用户名启动程序,捕获桌面,而不是直接尝试从服务中执行。

我一直在墙上撞了几个小时,现在试图解决这个问题,我以前从未提供过服务,只是表单应用程序,以及我的下一个项目(Client Server Model Client Monitoring实用程序)需求在客户端计算机上作为服务安装并将数据发送回主服务器。

在我查找如何编写服务以及如何安装服务之前从未编写过服务。我完全正常工作,当前工作版本每30秒发出一次事件注册,以显示其工作情况。

我开始在LocalSystem中运行它,因为我认为它有权写入文件,但在那次失败之后我尝试了LocalService,这也没有用。

我将目录指定为C:\ WatcherData \ Test.jpg

并在常规表单应用程序(可行)中进行测试

OutputImage.Save(“c:\ watcherdata \ test.jpg”,ImageFormat.Jpeg);

没有例外,没有事件,它只是没有发生,但是事件日志消息被放在它之前,所以它应该到达那一点,对吗?

任何帮助都将受到赞赏,如果您需要了解其他任何我很乐意帮助

编辑: 这里有一些代码:

private void ServiceWorkerThread(object state)
    {
        while (!this.stopping)
        {
            this.eventLog1.WriteEntry("This is a test2");

            CallMe();

            Thread.Sleep(30000);
        }

        this.stoppedEvent.Set();
    }

    private void CallMe()
    {
        try
        {
            int screenWidth = Screen.GetBounds(new Point(0, 0)).Width;
            int screenHeight = Screen.GetBounds(new Point(0, 0)).Height;
            Bitmap OutputImage = new Bitmap(screenWidth, screenHeight);
            Graphics gfx = Graphics.FromImage((Image) OutputImage);
            gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
            OutputImage.Save("c:\\watcherdata\\test.jpg", ImageFormat.Jpeg);
        }
        catch (Exception e)
        {
            this.eventLog1.WriteEntry(e.Message + "\r\n" + e.StackTrace, EventLogEntryType.Error);
        }
    }

大部分内容来自Microsoft示例文档,正如我所说,我是服务新手

目前仍在试图弄明白,如果我到处都会让你们知道

编辑2

在玩了一些之后我设法让它写入文件,在意识到大部分问题是由于我对如何构建服务和安装程序缺乏了解,显然当我构建我的时候我没有重建安装程序服务。

现在它只是写下所有黑色,一张大而黑的照片。但至少是它的写作!

1 个答案:

答案 0 :(得分:2)

一些源代码怎么样?

我可能会添加一些跟踪以确保执行文件写入代码。

大多数情况下,此类故障是权限问题和/或人们正在尝试写入Windows系统目录。您的问题表明您确保不写入Windows目录。请确保存在c:\ watcherdata文件夹。