我使用FileWatcher
类构建了一个Windows服务。它必须检测文件夹中的传入文件并将它们移动到新位置。
我的代码作为控制台应用程序正常运行但不能用作Windows服务。文件仅保留在Source文件夹中。他们没有移动到目的地。我已经完全访问了在LOCAL SYSTEM帐户中运行的文件夹和服务。你能指出错误吗?提前谢谢。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
bulk_watch();
}
public static void bulk_watch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\Users\ADMIN\Downloads\FW_Source";
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}
public static void OnChanged(object sender, FileSystemEventArgs e)
{
DirectoryInfo directory = new DirectoryInfo(@"C:\Users\IBM_ADMIN\Downloads\FW_Source");
FileInfo[] files = directory.GetFiles("*.*");
foreach (var f in files)
{
File.Move(f.FullName, System.IO.Path.Combine(@"C:\Users\ADMIN\Downloads\FW_Dest", Path.GetFileName(f.FullName)));
}
}
protected override void OnStop()
{
}
}
}
答案 0 :(得分:0)
默认情况下,Windows服务在LocalSystem帐户下运行(除非您在安装时指定其他帐户)。您需要授予此帐户两个文件夹的访问权限。
答案 1 :(得分:0)
使用以下命令使用用户名和密码创建服务:
<div class="ui-g">
<p-dataTable class="ui-g-4">
Columns...
<p-dataTable>
<svg class="ui-g-8">
Visualistion...
</svg>
</div>
Repace: ServiceName,exe文件位置,DisplayName,用户名和密码。