ich ein Programm namens „Copyfile“ geschrieben habe wiederholt eine Datei von lokalen zu einem Netzwerk freigegebenen Ordner zu kopieren, wie unter:C#: Unterschied zwischen einem Programm direkt ausführen und rufen Sie von einem anderen Prozess
List<string> log = new List<string>();
string originPath = "*LOCAL PATH*";
string targetPath = "*TARGET PATH*";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
if (File.Exists(originPath))
{
p.Start();
StreamWriter sw = p.StandardInput;
sw.WriteLine(@"NET USE *TARGET IP* *PASSWORD* /USER:*USERNAME*");
sw.WriteLine(@"COPY "+'"'+originPath+'"'+ " "+'"'+targetPath+'"');
sw.WriteLine("Y");
sw.WriteLine("EXIT");
sw.Close();
p.WaitForExit();
log.Add(p.StandardOutput.ReadToEnd());
}
else
{
log.Add("No file");
}
Ich habe versucht, Dieses Programm in meinem Computer, wenn ich dieses Programm durch Doppelklick ausführen das Programm erfolgreich ausgeführt. Aber wenn ich ein anderes C# -Programm oder Windows Task Scheduler verwende, um es aufzurufen und auszuführen. Das Programm kann nicht normal arbeiten. Ich habe die Protokolldatei überprüft, um die Ausgabe zu sehen. Das Protokoll Doppelklick und ausführen zeigt:
D:\Downtime>NET USE *TARGET IP* *PASSWORD* /USER:*USERNAME*
The command complete successfully.
D:\Downtime>COPY *originpath* *targetpath*
1 file(s) copied.
D:\Downtime>EXIT
Aber wenn ich ein anderes C# Programm oder Windows-Taskplaner verwenden, um sie auszuführen, das Protokoll zeigt
C:\Windows\system32>NET USE *TARGET IP* *PASSWORD* /USER:*USERNAME*
C:\Windows\system32>COPY *originpath* *targetpath*
0 file(s) copied.
C:\Windows\system32>EXIT
aussieht, wenn ich es von einem anderen rufen Programm oder der Windows-Task-Scheduler die "cmd.exe" wird nicht den Befehl "NET USE" ausführen, so dass ich keine Verbindung zum Netzwerk-Computer herstellen und Dateien auf sie kopieren kann. Weiß jemand, was das Problem ist? Vielen Dank.
Laufwerke werden vom Benutzer-Token zugeordnet. Admins haben zwei AsAdmin und Limited. Sie müssen jedoch nichts tun. 'copy" \\ Servername \ Freigabename \ Ordner \ Datei.ext "" \\ Servername \ Freigabename \ Ordner \ Datei.ext "'. Das Zuordnen von Laufwerken ist eine Kompatibilitätsfunktion für Windows 95-Programme, die nicht mehr von Benutzern verwendet wurden. –
Sehr wahrscheinlich wird die Fehlermeldung, die durch den 'NET USE' Befehl erzeugt wird, in' StandardError' geschrieben. Sie müssen diese Ausgabe auch erfassen, wenn Sie sehen möchten, was sie sagt. –