我想要在Windows Server 2008服務器上運行Windows服務,該服務器將監視本地服務器上的目錄(即C:\ Watch),並且在該目錄中創建新的pdf時,將該文件複製到網絡分享(即//192.168.1.2/Share)。如何複製從Windows服務文件到網絡位置?
既不的服務器是域的成員。
Windows服務有它的身份登錄設置誰可以訪問//服務器/股,並創建和刪除文件沒有概率本地用戶帳戶。
我有以下工作正常,如果sourceDir和destDir是類似C:\ Source和C:\ Dest的本地文件夾,但如果我將destDir更改爲網絡位置,如// server/share /或// //服務器// //共享我得到的錯誤「裏邊反文件名,目錄名或卷標語法不正確」。
更新: 我不再收到上述錯誤,現在當我有sourceDir設置爲C:\觀察和DESTDIR設置爲\服務器\共享\(其中服務器可以是Windows或Ubuntu服務器我得到一個System.UnauthorizedAccess錯誤,我假設它來自目標服務器,如何設置連接到目標服務器時使用的憑據,請記住服務器不在域中,可以是Windows或Ubuntu。
public partial class Service1 : ServiceBase
{
private FileSystemWatcher watcher;
private string sourceFolder;
private string destFolder;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
this.sourceFolder = Properties.Settings.Default.sourceDir;
this.destFolder = Properties.Settings.Default.destDir;
watcher = new FileSystemWatcher();
watcher.Path = this.sourceFolder;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Filter = "*.pdf";
watcher.Created += new FileSystemEventHandler(watcher_Created);
watcher.EnableRaisingEvents = true;
}
protected override void OnStop()
{
}
private void watcher_Created(object source, FileSystemEventArgs e)
{
FileInfo fInfo = new FileInfo(e.FullPath);
while (IsFileLocked(fInfo))
{
Thread.Sleep(500);
}
System.IO.File.Copy(e.FullPath, this.destFolder + e.Name);
System.IO.File.Delete(e.FullPath);
}
}
感謝。我硬編碼@「\\服務器\共享\」,但現在出現以下錯誤「的文件不能被系統訪問」。所以我想這是一個權限的事情,即使當我登錄作爲用戶服務設置爲登錄,因爲我可以在\\服務器\共享 – etoisarobot 2011-03-16 18:27:21
創建文件在旁註我怎樣才能使用@作爲@「 \\ server \ share \「,當路徑是一個字符串變量時。 – etoisarobot 2011-03-16 18:30:00
你可以在你的app.config中存儲目的地,並從那裏讀取它,在app.config中,它只需要是\\ server \ share – kd7 2011-03-16 18:34:15