J'utilise System.IO.File.Copy pour copier un fichier vers c $ sur un serveur distant. J'ai besoin de spécifier le nom d'utilisateur/mot de passe pour la connexion. Y a-t-il un moyen simple de le faire? J'avais espéré que System.IO.File.Copy accepterait les informations d'identification en tant qu'argument mais ce n'est pas le cas. Comment puis-je faire ceci?VB.NET System.IO.File.Copy question
2
A
Répondre
1
absolue chose la plus simple à faire est d'ajouter cette routine à votre code puis appelez juste avant votre File.Copy:
Private Sub Open_Remote_Connection(ByVal strComputer As String, ByVal strUsername As String, ByVal strPassword As String)
'//====================================================================================
'//using NET USE to open a connection to the remote computer
'//with the specified credentials. if we dont do this first, File.Copy will fail
'//====================================================================================
Dim ProcessStartInfo As New System.Diagnostics.ProcessStartInfo
ProcessStartInfo.FileName = "net"
ProcessStartInfo.Arguments = "use \\" & strComputer & "\c$ /USER:" & strUsername & " " & strPassword
ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden
System.Diagnostics.Process.Start(ProcessStartInfo)
'//============================================================================
'//wait 2 seconds to let the above command complete or the copy will still fail
'//============================================================================
System.Threading.Thread.Sleep(2000)
End Sub
1
Vous ne pouvez pas ajouter des informations d'identification à l'system.io.file, mais il semble y avoir une solution de contournement ici: http://forums.asp.net/t/1283577.aspx/1
Snippet de lien ci-dessus:
using (System.Security.Principal.WindowsImpersonationContext ctx = System.Security.Pricipal.WindowsIdentity.Impersonate(userTokenptr))
{
//do your IO operations
ctx.Undo();
}
Converti en vb.net:
Using ctx As System.Security.Principal.WindowsImpersonationContext = System.Security.Pricipal.WindowsIdentity.Impersonate(userTokenptr)
'do your IO operations
ctx.Undo()
End Using
Crédits va à Ganeshyb
Questions connexes
- 1. VB.Net Question
- 2. Question VB.NET. Linq Support?
- 3. VB.NET WindowForms Question
- 4. VB.NET Timer question
- 5. Formulaire VB.NET Hauteur Question
- 6. DateTime question dans VB.NET
- 7. 'out' question dans VB.NET
- 8. VB.Net question de fil
- 9. VB.NET WinForms ListView Question
- 10. vb.net - hex, bitwise question
- 11. VB.net et SQL Question
- 12. pointeur VB.NET Interop question
- 13. VB.NET: question sur « l'aide » bloc
- 14. Dossier de projet VB.NET Question
- 15. Question simple - Copie superficielle (VB.Net)
- 16. facebook C# SDK vb.net question
- 17. WinForms question de clôture, vb.net
- 18. vb.net dynamic plugin chargement question
- 19. Question de dépendance DLL VB.NET
- 20. VB.net question de navigateur Web
- 21. VB.net Winforms dropdownbox data load question
- 22. dataType question de vérification dans VB.NET
- 23. VB.net question de l'événement tick tick
- 24. exemple Old sur les interfaces VB.NET question
- 25. Vb.Net question de portée - champs privés
- 26. VB.NET Array question de déclaration explicite
- 27. VB.net Question avec recherche de tableau
- 28. Webbrowser comme le contrôle Mozilla pour VB.NET question
- 29. VB6 convertir en VB.net Variante de la question
- 30. Collections génériques, Classes membres, conception question de modèle pour VB.NET
Merci. Et WOW. C'est incroyablement complexe pour quelque chose qui devrait évidemment être une fonction intégrée de la méthode Copy. Est-ce le seul moyen? Je dois juste croire que MS aurait pensé à cela et aurait inclus un moyen beaucoup plus simple. –
Vérifiez également ceci: http://msdn.microsoft.com/en-us/library/6485ct6t(vs.71).aspx (pour les choses plus complexes) :) – Stefan
Et voici une autre solution: http: // social. msdn.microsoft.com/Forums/fr-FR/vbgeneral/thread/b732f49a-5aa8-4a9d-8f88-35d7f235a082/ – Stefan