Hallo,
ich habe das Problem, dass unter Windows Netzlaufwerke per user gemaped werden.
Das heißt wenn ich es als user A verbinde, ist es für user B nicht verfügbar.
Ich habe eine Anwendung, die als Administrator ausgeführt werden muss aber vom Benutzer gestartet werden soll.
Nun dachte ich mir ok ... erstelle ich ein Process objekt. Gebe dem Benutzername und Passwort, mappe das laufwerk und führe danach mein programm aus.
Pustekuchen!
Irgendwie ist das Laufwerk nach dem 1. WaitForExit schon nicht mehr verfügbar
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Globalization; using System.IO;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Process P = new Process(); P.StartInfo.UseShellExecute = false; P.StartInfo.LoadUserProfile = true; P.StartInfo.UserName = "Administrator"; P.StartInfo.Domain = "RECHNERNAME"; System.Security.SecureString password = new System.Security.SecureString(); string pw = "MeinPasswort"; foreach (char c in pw) password.AppendChar(c); P.StartInfo.Password = password;
P.StartInfo.FileName = Environment.SystemDirectory + "\\cmd.exe"; P.StartInfo.Arguments = "/k net use y: \\\\SR1NV99\\d$\\DSL-Snapshots ADMINPASSWORT /USER:SR1NV99\\Administrator /PERSISTENT:yes"; Console.WriteLine(P.StartInfo.Arguments); P.Start(); P.WaitForExit();
P.StartInfo.FileName = "C:\\Local\\csharpsnap\\snapshot.exe"; P.StartInfo.Arguments = "C: Y:\\test.sna"; Console.WriteLine(P.StartInfo.Arguments); P.Start(); P.WaitForExit();
Console.ReadLine();
} } } |
(entwickle in c# aber die klassen und funktionsweise sollte ja die gleiche sein)
Hat jemand eine Idee wie ich das lösen könnte?