servizio di Windows non può copiare di file quota
-
21-08-2019 - |
Domanda
Ho un servizio di Windows impostato per copiare i file da una directory locale ad una condivisione Samba.
Il servizio si collega tramite un percorso UNC al server (cioè \ remoteserver \ directory_condivisa).
Ho effettuato il login come utente con cui il servizio è in esecuzione, ed è stato in grado di entrambi i file di copia e creare file nella condivisione di samba, utilizzando il percorso UNC.
Tuttavia, quando si esegue il servizio che ottengo io eccezioni che suggeriscono un errore di login. Ho eseguito monitor di processo su quella scatola, a guardare il servizio e posso vederlo trovare il percorso UNC, ma ottenere un errore di accesso quando si cerca di scrivere alla condivisione.
Questa è usando plain vanilla chiamata .net System.IO.File.Copy.
Non capisco gli errori, come quando connesso con lo stesso utente sono in grado di copiare e creare file nella condivisione.
Tutte le idee?
Modifica: text eccezione
Errore nel ciclo di elaborazione principale (DoWork ()): Errore durante l'accesso: sconosciuto nome utente o password.
System.Exception: Errore MyService.ProcessExportTransferfileDirectories e valori: D: \ Export, \ RemoteServer \ intray, D: \ Export \ Archive ---> System.IO.IOException: Errore durante l'accesso: nome utente sconosciuto o password.
a System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) a System.IO .__ Error.WinIOError () a System.IO.File.Move (String SourceFileName, String destFileName)
a MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String SourceFolder, String TargetFolder, String archiveFolder, String rootFolder, LogCategory logCategory, LogCounter logCounter) --- Fine stack eccezione interna --- in MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String SourceFolder, String TargetFolder, String archiveFolder, String rootFolder, LogCategory logCategory, LogCounter logCounter) a MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer (IDictionary`2 fileDirectories) a MyService.Core.TimedWorkerProvider.DoWork ()
Soluzione
E 'finito per essere un problema di autorizzazioni -. Dopo l'esecuzione del servizio come un altro utente che è stato installato sulla quota di samba ha funzionato senza problemi, la copia dei file attraverso
Ancora non capisco perché quando si utilizza un account diverso potrei copiare / creare i file nella condivisione utilizzando Windows Explorer, ma quando il servizio è stato eseguito con lo stesso account che non poteva accedere alla condivisione a tutti: (
Altri suggerimenti
mi sento di raccomandare a mappare un'unità prima e poi fare la copia di file per l'unità mappata invece della condivisione.
È possibile mappare un'unità utilizzando il comando DOS net use. Ad esempio:
System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")
Questo dovrebbe risolvere eventuali problemi di accesso.
Uno strumento molto utile nella vostra situazione è monitor di processo . Basta eseguirlo come amministratore e aggiungere il seguente filtro:
Process Name is "your_process.exe" AND Operation is "CreateFile"
Si vedrà informazioni dettagliate sui file il processo sta tentando di utilizzare.
Come già detto, quando accedo con il stesso account che il servizio è esecuzione come, non ho problemi a copiare da e per la creazione di file sulla condivisione. - Oded 1 min fa
Lo si concede l'account utente del servizio è in esecuzione come "Accesso come servizio" autorizzazioni nel criterio di protezione locale ??