我使用Commons IO编写了一个复制文件和其他东西的程序。但我想将文件复制到本地IP地址\\10.x.x.x
,但用户没有权利进行复制,因此我需要输入ID和密码才能访问它。但是我无法找到一种方法。
要移动我使用的文件:
FileUtils.moveFileToDirectory(fichier, destDir,true);
但我的目录类似于\\10.x.x.x\files
,只有少数用户可以在该目录中写入,所以我有一个ID&密码,让您在那里移动文件。我希望即使用户没有权利将文件移动到该目录,我的程序也可以这样做。
答案 0 :(得分:1)
不确实是Windows安全的工作方式。如果你真的想这样做,你将不得不使用Java Native Interface或Java Native Access,并设法从Mpr.dll
调用WNetAddConnection函数(并且不要忘记调用{{1}完成后。)
但是您必须在程序中存储密码,这是一种很差的安全措施。
执行此操作的标准方法是启动一个服务,该服务将在可以访问所需目录的用户下运行,并让您的程序使用您想要的任何内容与其进行通信,最简单的方法可能是TCP / IP 。但除非你有特殊要求,否则我不建议将Jave用于那些类型的程序。
更多Java替代方案是在有权访问该目录的用户下运行的服务器计算机上启动Tomcat服务。这样您就必须开发一个标准的Java Web应用程序,它能够上传将文件保存到正确目录的文件。但它将是一个传统的,可移植的Java应用程序,不需要JNI和JNA。
如果无法使用Tomcat并且不想对其投入太多,可以将程序分成几部分:
WNetCancelConnection
实用程序,或者可以易于用Java编写copy
和sc
如果您使用客户端程序,则可以轻松地为每个复制的文件添加数字签名文件,但正如我上面所说,这是一种糟糕的安全措施,并且几乎没有任何安全性。至少该程序应该是可执行的并且不可读,并且源应该保持隐藏。最好记录复制文件的用户,并询问他们发现问题的原因。