Сопоставьте общую папку в другом домене, используя net.exe в приложении ac # Windows Service - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь подключить сетевой диск к серверу внутри службы Windows, написанной на c #. Я пытался использовать net.exe с кодом ниже

        System.Diagnostics.Process p = new System.Diagnostics.Process();
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.RedirectStandardOutput = true;

        p.StartInfo.FileName = "net.exe";
        p.StartInfo.Arguments = " use " + DriveLetter + Path + " " + Password + " /user:" + Username;
        p.Start();
        p.WaitForExit();

аргументы в основном переводятся как "использовать X: \\ 192.45.xx.xxx \ имя_хармена" xxxx "/ пользователь: имя домена \ имя пользователя"

Я получаю сообщение об ошибке «имя сети не найдено», когда это выполняется. Сервер, к которому я пытаюсь получить доступ, находится в другом домене, чем тот, на котором находится мое приложение, поэтому я думаю, что получаю эту ошибку.

Кто-нибудь знает, как я могу обойти это и сопоставить общую папку из другого домена на моем локальном компьютере?

Буду очень признателен за любую помощь

Спасибо Картик

1 Ответ

1 голос
/ 19 сентября 2011

аргументы в основном переводятся как "использовать X: \ 192.45.xx.xxx \ sharename" xxxx "/ user: domainname \ username"

Предполагая, что все остальное правильно, эта ошибкавызвано указанием одной обратной косой черты перед IP-адресом - вам нужно 2 обратной косой черты.

enter image description here

update

В ответ на ваши комментарии ясно, что вы прошли аутентификацию надоступ к ресурсам этого другого домена.Если он не является широко открытым, маловероятно, что служба Windows, которая, вероятно, работает под системной учетной записью, сможет получить доступ к этим ресурсам.

В качестве шага устранения неполадок измените службу для запуска под своей учетной записью и просмотритеесли это имеет значение.

...