Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2014, 13:23   #1
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию Как получить доступ к папке на сервере

Добрый день.

Столкнулся с проблемой защиты информации расположенной в сетевой папке от изменения. Пользователи посредством vba создают отчет и информация из отчета добавляется в последнюю строку файла на сетевой папке. Потом умный пользователь может зайти и вручную изменить в нем данные - так не должно быть.

Вопрос, как сделать такое:
Через VBA получить доступ к сетевой папке от имени другого пользователя у которого к данной папке есть права на запись, открыть файл и сделать в нем изменение.

Нашел такой код, но ничего не понял

Код:
/code
Private Declare Function WNetAddConnection2 Lib 'mpr.dll' Alias 'WNetAddConnection2A' (lpNetResource As NETRESOURCE, ByVal strPassword As String, ByVal strUserName As String, ByVal lngFlags As Long) As Long

Private Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type

Public Function dhAddConnection2(strNetPath As String, strUserName As String, strPwd As String) As Long
Dim usrNetResource As NETRESOURCE
With usrNetResource
.dwType = &H1
.lpLocalName = ''
.lpRemoteName = strNetPath
.lpProvider = vbNullString
End With
dhAddConnection2 = WNetAddConnection2(usrNetResource, strPwd, strUserName, &H1)
End Function

Call dhAddConnection2(ServerName, 'EasySystem', Password)
lioon вне форума Ответить с цитированием
Старый 01.09.2014, 17:46   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Нашел такой код, но ничего не понял
мне тоже в этом коде ничего не понятно
тем более, этот код не будет работать на 64-битном Office


вы уверены, что выбрали правильный подход?
я бы подумал, как сделать иначе, - а то простейшая операция добавления строки обрастёт кучей кода...
и ещё проблемы одновременного доступа к файлу... лучше вообще не связываться


самый простой вариант: поставить защиту на лист (а файл Excel оставить общедоступным)
перед добавлением строки, макросом снимать защиту листа, а потом ставить обратно
(это всего 2 доп. строки кода)
защита листа, конечно, легко снимается, - но, если реально захотят что-то сломать,
- так и в вашем варианте, смогут подсмотреть учетку доступа к файлу в коде макроса
(пароль на макросы снимается также легко, как защита листа)


PS: нормальный (надежный) способ: отправлять данные на веб-сервер (несколько строк кода),
а на сервере код PHP добавит нужную запись в базу (или какой-нибудь файл)
Но это надо знать PHP
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как предоставить доступ к папке определенному пользователю программно? artemavd Общие вопросы Delphi 6 21.06.2012 01:51
Как получить список файлов в папке или деректории? stdio Общие вопросы C/C++ 3 05.03.2012 22:17
Как сохранить файл на сервере в нужной папке Arassir PHP 1 25.06.2011 20:31
Как получить имя последней подпапки в папке? artemavd Общие вопросы Delphi 6 04.02.2011 14:58
Как ограничить доступ к папке с помощью реестра. rv9whu Безопасность, Шифрование 1 31.05.2009 20:26