Ошибка при выполнении xcopy из кода C# от имени другого пользователя
Я пишу небольшую программу для копирования файлов с одного сервера на другой, и для этого я использую xcopy
Команда из кода C#. Я хочу выполнить процесс как другой пользователь, для которого я использую следующий код -
string sourceLoc = @"c:\test\xyz.xlsx";
string destinationLoc = @"c:\subfolder";
var abc= "Password";
var pass = new System.Security.SecureString();
foreach (char c in abc)
{
pass.AppendChar(c);
}
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UserName = "admin";
startInfo.Password = pass;
startInfo.Domain = "domain";
startInfo.Verb = "runas";
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "xcopy";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "\"" + sourceLoc + "\"" + " " + "\"" + destinationLoc + "\"" + @" /e /y /I";
try
{
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch (Exception exp)
{
throw exp;
}
Но я получаю следующую ошибку:-
Необработанное исключение: System.ComponentModel.Win32Exception: недопустимое имя каталога в LogReader.Program.Main(String[] args) в C:\Users\sdg\documents\visual studio 2010\Projects\LogReader\LogReader\Program.cs: линия 66
Если я запускаю программу без предоставления других учетных данных пользователя, она работает нормально.
1 ответ
Я не реплицировал вашу среду, так что это всего лишь идея, но я смог воспроизвести эту ошибку, установив ProcessStartInfo.WorkingDirectory
в папку, к которой у текущего пользователя нет доступа. Если по умолчанию используется текущая папка приложений, возможно, она пытается использовать путь в c:\Users\
к которому другой пользователь не имеет доступа.