Время от времени занимаюсь одной проблемой, но сроки поджимают, и я решил обратиться к знающим, опытным в Java людям.
Подскажите, плиз, как можно изменить пользователя, под которым запущен процесс/поток имея сетевые логин и пароль?
Задача следующая. Даны виндовые шары, и логины/пароли пользователей которые имеют доступ к этим шарам (каждый к своей). Как можно в Java реализовать автоматический просмотр файлов в этих шарах? (Можно считать что это обычные каталоги, но с разными настройками security).
Все уже работает. С шарами работаю как с обычными каталогами. Только не разобрался как менять эти самые права...
Если можно, какой-нить примерчик маленький на Java, если кто-то решал подобную проблему.
Здравствуйте, TheGrey, Вы писали:
TG>Задача следующая. Даны виндовые шары, и логины/пароли пользователей которые имеют доступ к этим шарам (каждый к своей). Как можно в Java реализовать автоматический просмотр файлов в этих шарах? (Можно считать что это обычные каталоги, но с разными настройками security).
Ключевое слово выделено. Это говорит о том, что без нейтив кода не обойтись (через JNI).
Кто-то сказал когда-то давно, что людям свойственно убивать тех, кого любишь. Что ж, верно и обратное.
Здравствуйте, Risotto, Вы писали:
R>Ключевое слово выделено.
Верно.
R>Это говорит о том, что без нейтив кода не обойтись (через JNI).
А как же вот это?
Здравствуйте, fefelov, Вы писали:
F>Здравствуйте, Risotto, Вы писали:
R>>Ключевое слово выделено. F>Верно.
R>>Это говорит о том, что без нейтив кода не обойтись (через JNI). F>А как же вот это?
А вот у меня возникла похожая проблема:
Задача — прочитать структуру каталога из расшаренной папки на другом компе
Здравствуйте, Olexiy, Вы писали:
O> SmbFile[] allFiles = file.listFiles(); /// Вылетает exception — cannot connect to socket O>Есть какие-то идеи что я делаю не так?
Дайте полный текст exception.
Re[5]: Изменение прав для своего процесса
От:
Аноним
Дата:
18.05.05 21:21
Оценка:
F>Дайте полный текст exception.
Я прошу прощения, я допустил одну неточность.
У меня в коде встречается
SmbSession.logon(mydomaincontroller, mycreds);
Так вот, если эта строчка в коде есть, то Exception вылетает при её исполнении. Если же её убрать — то там, где и было мной указано.
В обоих случаях, e.printStackTrace(); выводит следующее:
jcifs.smb.SmbException: Failed to negotiate
jcifs.smb.SmbException: Timeout trying to open socket
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:211)
at jcifs.netbios.NbtSocket.<init>(NbtSocket.java:59)
at jcifs.smb.SmbTransport.run(SmbTransport.java:342)
at java.lang.Thread.run(Thread.java:534)
at jcifs.smb.SmbTransport.start(SmbTransport.java:315)
at jcifs.smb.SmbTransport.negotiate0(SmbTransport.java:865)
at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:941)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
at jcifs.smb.SmbSession.logon(SmbSession.java:159)
at jcifs.smb.SmbSession.logon(SmbSession.java:152)
at jCIFSFileClass.DownLoadFile(jCIFSFileClass.java:57)
at jCIFSFileClass.main(jCIFSFileClass.java:18)
at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:947)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:119)
at jcifs.smb.SmbSession.logon(SmbSession.java:159)
at jcifs.smb.SmbSession.logon(SmbSession.java:152)
at jCIFSFileClass.DownLoadFile(jCIFSFileClass.java:57)
at jCIFSFileClass.main(jCIFSFileClass.java:18)
Здравствуйте, Olexiy, Вы писали:
O>Я пробовал как "smb://anotherpc", так и "//anotherpc", так и "anotherpc" — эффект одинаковый.
А в эксплорере (или через net view) вы этот anotherpc видите?
На нем есть учетная запись login/pass?
Попробуйте в код обработчиков исключений вставить вот это:
switch( se.getNtStatus() ) {
case SmbException.NT_STATUS_OK:
..
case SmbException.NT_STATUS_ACCESS_DENIED:
..
case SmbException.NT_STATUS_WRONG_PASSWORD:
..
case SmbException.NT_STATUS_LOGON_FAILURE:
..
case SmbException.NT_STATUS_ACCOUNT_RESTRICTION:
..
case SmbException.NT_STATUS_INVALID_LOGON_HOURS:
..
case SmbException.NT_STATUS_INVALID_WORKSTATION:
..
case SmbException.NT_STATUS_PASSWORD_EXPIRED:
..
case SmbException.NT_STATUS_ACCOUNT_DISABLED:
..
case SmbException.NT_STATUS_ACCOUNT_LOCKED_OUT:
..
}
Не удалось соединиться со своей собственной машиной (Windows XP Home SP2).
jCIFS сказал:
Exception in thread "main" jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password.
at jcifs.smb.SmbTransport.send(SmbTransport.java:689)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:271)
at jcifs.smb.SmbSession.send(SmbSession.java:228)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:134)
at jcifs.smb.SmbSession.logon(SmbSession.java:159)
at jcifs.smb.SmbSession.logon(SmbSession.java:152)
at ListFiles.main(ListFiles.java:10)
У меня тоже такое было в самом начале — не удавалось залогиниться на свою машину. Однако сейчас как раз наоборот — на свою могу, на остальные не могу. Буду пробовать