Solved

.net Windows Service - access to folder on LAN is denied

Posted on 2010-08-23
5
480 Views
Last Modified: 2012-05-10
Hi,

I just created a windows service (as per below) which simply copies a file every 10 seconds (I will change that to just once a day... just want to backup a file on the server onto the LAN). I changed the ip address just to 'ipaddress' but the error message below leads me to think that it can find the file ok, but I just can't access it as my access to that folder is denied. The code works fine when i copy to my local pc but just not when trying to copy from local pc to LAN.

I did read, however, that windows services run under the system account and don't have access to the network. If so, how to gain access... or how to achieve what i want to achieve?

error message: (not too sure what first part is... something missing i guess for my computer to be able to display it.

The description for Event ID ( 0 ) in Source ( Application ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: Copy Failed: Access to the path '\\10.237.47.143\DEPT\CSO\OBO\BRA\BRA\Sita Account\Aiden\TestLAN\CTA Test.mdb' is denied..



Imports System.Timers

Imports System.IO

Imports System.Net



Public Class CSATService

   Private t As Timer = Nothing



   Protected Overrides Sub OnStart(ByVal args() As String)

      ' Add code here to start your service. This method should set things

      ' in motion so your service can do its work.



      t.Start()



   End Sub



   Protected Overrides Sub OnStop()

      ' Add code here to perform any tear-down necessary to stop your service.

      t.Stop()

   End Sub



   Protected Sub t_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs)



      Try

         Dim copyFile As FileInfo = New FileInfo("E:\Test\CTA Test 2010.06.30.mdb")

         copyFile.CopyTo("\\ipaddress\TestLAN\CTA Test.mdb", True)

      Catch ex As Exception

         System.Diagnostics.EventLog.WriteEntry("Application", "Copy Failed: " & ex.Message.ToString)

      End Try



   End Sub



   Public Sub New()



      ' This call is required by the Windows Form Designer.

      InitializeComponent()



      ' Add any initialization after the InitializeComponent() call.

      t = New Timer(10000)

      AddHandler t.Elapsed, New System.Timers.ElapsedEventHandler(AddressOf t_Elapsed)



   End Sub

End Class

Open in new window

0
Comment
Question by:AidenA
  • 2
  • 2
5 Comments
 
LVL 22

Expert Comment

by:pivar
Comment Utility
Hi,

If you have proper rights to access "\\10.237.47.143\DEPT\CSO\OBO\BRA\BRA\Sita Account\Aiden\TestLAN\CTA Test.mdb", it's probably that the file is in use by SQL Server. Also, you shouldn't copy the datafile as you can't just copy it back. You can create a backup job and then copy that bak file.

/peter
0
 

Author Comment

by:AidenA
Comment Utility
hi, well i have access rights ok, as i can access the folder myself from the windows explorer.

I don't use sql server, the file is an MS Access file. Not sure what you mean here?

This is the first windows service i've created... so not sure what you mean in your third point either! What do you mean I shouldn't copy the datafile as I can't copy it back? (don't want to copy it back anyway?) I can create a backup job and then copy the back file? Sorry you lost me there?
0
 
LVL 22

Accepted Solution

by:
pivar earned 500 total points
Comment Utility
Sorry, I thought it was a sql server datafile. In case of an Access datafile, you can ignore the points about not being able to copy and backup job. But it could still be a problem with the file being in use.

But if the service is running with the system account, that is probably the cause. This account doesn't have access on the lan. It doesn't matter whether your own user has access or not. You can change user under Logon properties for the service.

0
 

Author Comment

by:AidenA
Comment Utility
ah, very good... i went into properties of the service and under logon it showed

NT AUTHORITY\LocalService

so i changed it to NT AUTHORITY\NetworkService and just set my own password and it worked.

Thanks! Hopefully it will also work on the server...

 Aiden
0
 
LVL 11

Expert Comment

by:tickett
Comment Utility
Depending on the type of network it is normally best practice to have a (or a number of) service accounts (normally domain accounts, assuming your computers are part of a domain). You should then run the service using the credentials of a domain account which has permission to the relevant paths.

L
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now