Невозможно получить доступ к файлам на подключенном сетевом ресурсе диска из службы Windows

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

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

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

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

3 ответа

Решение

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

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

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

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

и ожидается, что работа будет следовать моим шагам

                    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 path example \computername\sharedname\folder\filename 4, просто fso.copyfile(uncpath,tempfoler,true) 5, у вас есть доступ к вашему файлу во временной папке, к которому он должен получить доступ и работает отлично

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

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

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

Джагадиш Говиндарадж Пиллай jagadeesh1492@facebook.com

Другие вопросы по тегам