2017-02-05 9 views
1

У меня есть веб-страница, написанная на MVC C#. Я хочу запустить некоторый пакетный файл (на удаленном ПК) для действия пользователя на этой странице. У меня есть следующие функции для запуска пакетных файлов на удаленном компьютере:Выполнение пакетного файла на удаленном ПК с веб-страницы при действии пользователя

public bool runBatch(string address, string batchFile, string pwd, string username) { 
    try { 
     string AppPath = address; 

     string strFilePath = AppPath + batchFile; 
     Process proc = new Process(); 
     proc.StartInfo.FileName = strFilePath; 
     proc.StartInfo.UserName = username; 
     proc.StartInfo.Domain = "localdomain"; 
     System.Security.SecureString secret = new System.Security.SecureString(); 
     foreach (char c in pwd) 
      secret.AppendChar(c); 

     proc.StartInfo.Password = secret; 
     proc.StartInfo.UseShellExecute = false; 

     proc.Start(); 

     while (!proc.HasExited) { 
      proc.Refresh(); 
      Thread.Sleep(1000); 
     } 

     proc.Close(); 

     return true; 
    } catch (Exception ex) { 
     return false; 
     throw ex; 
    } 
} 

и я называю эту функцию следующим образом:

var run = runBatch("X.X.X.X:\\\\C:Users\\Admin\\Desktop\\", "ping.bat", "****", "Admin"); 

Мой ПК находятся в одном домене IP, и я проверил имя пользователя и пароли несколько раз, но я получил ошибку

имя пользователя и пароль неправильно

Я действительно смущен. Кто-нибудь может мне помочь?

+0

'XXXX: \\ C: Users \ Admin \ Desktop \ ping.bat' не является допустимым UNC-контуром, не говоря уже о том, что вызов удаленного сценария по пути UNC по-прежнему будет запускаться на локальном хосте, а не в удаленный узел. Кроме того, является ли пользователь локальной учетной записью на удаленном хосте или учетной записи домена? –

+0

Итак, как я могу указать путь к моему пакетному файлу на удаленном ПК ?? пользователь является локальной учетной записью. это учетная запись администратора ПК. Что я могу сделать сейчас? – Nahid

+0

Предполагая, что X.X.X.X является IP-адресом с удаленного компьютера, на который вы хотите получить доступ к правильному пути UNC, будет: '\\\\ X.X.X.X \\ $ c \\ users \\ Admin \\ Desktop' Я думаю. '$ c' - сетевой ресурс, автоматически создаваемый окнами, который по умолчанию активен и создает доступ к системному диску. – geisterfurz007

ответ

0

Как некоторые из друзей помогают мне в этом вопросе, я отвечу, возможно, это может сэкономить время для другого. Проблема с моим кодом заключалась в том, что я неправильно задавал файл adrress и. Я должен называть это вот так:

var run = runBatch(@"\\x.x.x.x\C$\Users\Admin\Desktop\", "ping.bat", "****", "Admin"); 

Еще одна вещь, которую следует помнить, это то, что процесс может видеть общие папки на пути, который мы дали!

 Смежные вопросы

  • Нет связанных вопросов^_^