Не удается получить доступ к файлам на подключенном сетевом ресурсе диска из службы Windows - PullRequest
8 голосов
/ 23 июня 2010

У меня есть общая сетевая папка, сопоставленная с буквой диска, которая доступна из Проводника Windows, из командной строки, а также из моего приложения WinForms без проблем.Он также доступен из моей службы Windows по пути UNC.

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

Многие сайты клиентов используют буквы дисков для общих сетевых ресурсов, и я не всегда могу контролировать это и заставлять их указывать пути UNC.Мне нужно иметь доступ к сетевым ресурсам, используя буквы дисков из службы Windows.

Что мне нужно сделать, чтобы настроить службу Windows, чтобы она могла обращаться к сетевым общим папкам, сопоставленным с буквами дисков?Мой сервис Windows написан на C #.

Ответы [ 3 ]

10 голосов
/ 23 июня 2010

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

4 голосов
/ 23 июня 2010

подключенных дисков для объектов сеанса. Таким образом, каждый интерактивный сеанс имеет свое собственное сопоставление, а сервисный сеанс имеет другое сопоставление дисков. Чтобы получить правильный UNC-путь подключенного диска, вам нужно вызвать WNetGetConnection в правильном сеансе.

Вы можете использовать любые методы межсессионной связи для инициирования запроса и получения результата в службе, такие как WCF, именованный канал, сокеты и т. Д.

0 голосов
/ 05 августа 2013

Привет, Элан! Я столкнулся с той же проблемой в своем проекте и нашел решение

, и ожидается, что работа будет выполнена, следуй моим шагам

                    if (api.Docusign_download(strDocuSignUserName, strDocuSignPassword, strDocuSignIntegratorKey, EnvelopeID, Environment.ExpandEnvironmentVariables("%temp%")) == true)
                    {
                        if (m_streamWriter1 != null)
                        {
                            m_streamWriter1.WriteLine(" This envelop id is  Downloaded and update the table" + EnvelopeID + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\n");
                        }

                        fpath1 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '1' + ".pdf";
                        fpath2 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '2' + ".pdf";
                        if (System.IO.File.Exists(fpath1))
                        {
                            fso = new FileSystemObject();
                            // fso.CopyFile(fileLoc, "\\\\Tech-Pro-01\\D\\", true); i download the file in temp folder and copy file to unc path ur expected work on reverse like access file to unc path he does not work directly but work in in direct access like temp folder to services
                            fso.CopyFile(fpath1, UNC, true);  
                            fso.CopyFile(fpath2, UNC, true);
                            fso.DeleteFile(fpath1, true);
                            fso.DeleteFile(fpath2, true);
                            //System.IO.File.Move(fileLoc, fileLocMove);

Я просто использую устаревший скрипт приложения в файле vb fsoсистемный объект

1, убедитесь, что доступ к пути к карте в iuser и доступ к сетевым службам разрешены для подключенной машины 2, добавьте сценарий справочной системы

3 и пример пути unc \ computername \sharedname \ folder \ filename 4, просто fso.copyfile (uncpath, tempfoler, true) 5, у вас есть доступ к вашему файлу во временной папке, к которому он имеет ожидаемый доступ и отлично работает

доступ к временной папке "c: \ windows\ temp, потому что процесс может использовать только временную папку Windows

надеюсь, что он работает отлично

спасибо и всего наилучшего

jagadeesh Говиндарадж Пиллаи jagadeesh1492@facebook.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...