0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
1

Доступ К Сетевому Диску, Библиотека И Права

22.08.2013, 17:51. Показов 12319. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация...
Крепит человек файлик с сетевого диска, выбирает через FileOpenDialog, при вставке его в RT-поле вылезает сообщение "File Not Found"
Сначала думал путь к файлу длинный, потом начало такое происходить уже с короткими именами.
Последний файл был общей длинной 194 символа, не 255 же.
Доступ, чаще всего, в папки на сетевых дисках разграничены: одни отделы их видят, другие нет.
И вот тут задумался, права при прикреплении программно в RT поле чьи используются?
Библиотека, в которой прописан весь год был подписана мной, и сервером была тоже, ошибка все равно есть.
Получается что выбирая файл пользователь имеет к нему доступ, а дальнейший код этот файл в упор не видит?
Нашел вот такое сообщение: http:///ipb.html?s=&sh...ost&p=52990
Прочел всю ветку, это ад...
Всегда считал, что код в лотусе, почти всегда используется от прав пользователя, а по ходу нет. Или я не прав?
Прошу помощи, в упор не понимаю.

P.S. Я конечно могу сделать на лету простой батник с одной строкой: {copy %1 %2 /Y}, а потом запускать его через Shell, но что-то меня привлекает такое решение, да и пользователи на Mac у нас есть.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2013, 17:51
Ответы с готовыми решениями:

Доступ к сетевому диску
Есть удаленный сервер на котором имеем розшареную папку. На пользовательских машинах эта папка была...

Доступ к сетевому диску
У меня, допустим, много машин с разными ОС, хр, виста, 7. все находятся в одной рабочей группе. но...

Пропадающий доступ к сетевому диску
Господа форумчане помогите советом. Есть сетка на 40+ компов, у всех все нормально кроме одного...

Пропал доступ к сетевому диску
Добрый день. Проблема в следующем... Стоит ПО на компьюетере которое пишет на диск с вебкамер...

10
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
22.08.2013, 18:42 2
Наверное ты что-то не то делаешь или не договариваешь. Если все локально - то права локального пользователя.
Если через агент на сервере - соответственно права серверного пользователя
Еще есть смысл узнать о правах доступа к файлу у пользователя. Встречал такое, что было запрещено копирование с сетевого диска.

Набросал на скорую руку Action

.SpoilerTarget">Спойлер: Раскрывающийся Текст


Код
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument

Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject

Dim files As Variant


Set doc = ws.CurrentDocument.Document

files = ws.OpenFileDialog(True, "File List", "", "c:")

Set rtitem = New NotesRichTextItem( doc, "Body" )

Forall filelist In files
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", filelist)
End Forall

Call doc.Save( True, False, True )
End Sub
Атачил файл с сетевого диска. Работает нормально. Файл цепляется.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
23.08.2013, 10:45 3
вот на этой строке и ошибка:

LotusScript
1
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", filelist)
Нет файла и все, выполняется из кнопки на представлении.
Права к сетевому диску разграничны через Active Directory, думаю проблема тут.
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
23.08.2013, 11:48 4
Если файл можно из проводника куда-скопировать, то будет цеплятся. Иначе такое когда только права list на каталог\файл.
0
0 / 0 / 0
Регистрация: 15.09.2006
Сообщений: 99
25.08.2013, 06:04 5
А папки небось по русски обзываются, если ДА, то дели 256 на два - русские буквы 2 байта занимают....
Так что если на "шарах" всё по русски, то и в 194 символа может не влезть
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
25.08.2013, 09:31 6
DuChan
Мне казалось 256 это именно символов.
Попробую в unicode перевести при прикреплении, там точно в байтах расчет.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
28.08.2013, 19:46 7
Ну в целом да, права были ни при чем. Проблема в 260 символов WinAPI, хотя я всегда думал что русские символы только в Unicode кодируются 2-мя знаками.
Метод преобразования {\\?\} не работает, ровно до первого пробела сработать может, но не нормализует путь.

Теперь копирую файл в локальный темп и тяну оттуда в Lotus, естественно только для win.
Создаю bat-файл filesCopy.bat со строкой: {copy %1 %2 /Y}
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Для тех кто не понял что такое %1, %2 и /Y</div></div><div class="sp-body"><div class="sp-content">
/Y - флаг перезаписи, %i - это параметры, которые указываются при запуске bat
Парметров может быть от %1 - %9, есть еще параметр %0 - имя bat-файла.
При вызове параметры должны разделяться пробелом.
Подробнее тут: http://www.windowsfaq.ru/content/view/264/57/

Затем через WShell.Run запускаю и дожидаюсь окончания.

LotusScript
1
ReturnCode = WShell.Run({filesCopy.bat} & { "} & FilePath & {" } & newFilePath, 0, True)
кавычки для FilePath нужны если там есть пробелы, без них не копирует.
0 - не отображать окно, True - дождаться окончания.
Может кому пригодится, хотя..
0
0 / 0 / 0
Регистрация: 15.09.2006
Сообщений: 99
29.08.2013, 06:56 8
ну уж если Вы используете WSH, может попробывать путь перобразовать к формату "8.3"?
например через "Scripting.FileSystemObject"->ShortPath., правда для сетевых безбуквенных не знаю, заработает или нет - попробуйте...

Да и скопировать файл можно:

Код
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:\*.bat", "A:\", 0
CopyFile(<Source>,<Destination>,<Overwrite>)
Назначение: копирует один или несколько файлов.
Параметры:
<Source> - строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы "*" и "?".
<Destination> - строка, путь назначения (куда копировать).
<Overwrite> - необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию - True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
29.08.2013, 09:25 9
Кстати да, FSO.CopyFile прекрасно работает. А ожидание конца работы будет?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
29.08.2013, 22:30 10
юникод бывает разный, в винде, русские символы - 2-а знака - это описано (ссылки гуглятся)...
здесь можно сделать исторические отступления ;), но в контексте задачи нет необходимости
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
29.08.2013, 22:47 11
есть всякие "но и если" - http://msdn.microsoft.com/en-us/library/aa...47.aspx#maxpath для длины пути
0
29.08.2013, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2013, 22:47
Помогаю со студенческими работами здесь

как получить доступ в консоле к сетевому диску
как получить доступ в консоле к сетевому диску smb://artisoft/D монтирую заново smbmount...

PsExec. Доступ удаленного компьютера к сетевому диску
windows xp, доменная сеть университета psexec \\student1-123-1 cmd /c net use i:...

Как закрыть \ ограничить доступ к сетевому диску c++ builder
Как программно закрыть \ ограничить доступ к сетевому диску в c++ builder 6?

Подключение к сетевому диску
Здравствуйте. У меня такой вопрос, поставил Windows 7, все настроил вроде, создал диск с общим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru