它是不是真正的Windows安全工作方式。如果你真的想这样做,你将不得不使用Java Native Interface或Java Native Access,并设法调用Mpr.dll
中的WNetAddConnection函数(并且不要忘记在完成时调用WNetCancelConnection
)。
但是你将不得不在你的程序中存储一个密码,这是一个糟糕的安全实践。
要做到这一点的标准方法是启动一个服务,该服务可以在有权访问所需目录的用户下运行,并让您的程序使用任何您想要的与其进行通信,最简单的方法可能是TCP/IP。但除非你有特别的要求,我不会推荐使用Jave来处理这些类型的程序。
更多的Java替代方法是在有权访问该目录的用户下运行的服务器计算机上启动Tomcat服务。这样你只需开发一个标准的Java Web应用程序就可以上传文件,将文件保存到正确的目录。但它将是一个传统的和可移植的Java应用程序,不需要JNI和JNA。
如果不能使用Tomcat和不愿意进行投资,以多就可以了,你可以在块拆分方案:
- 一个客户端程序上的目录拷贝文件(服务器上)与文件创建权利为每个人 - 可以衰减到
copy
实用程序,如果没有更多必须完成或可以轻松地用Java编写
- 一个服务器程序,将在目标目录上具有完全写入权限的用户下的服务器计算机上运行。这其中,也可以很容易地用Java编写的
- 您可以轻松地为
srvany
服务器计算机上的服务与sc
并根据this answer上ServerFault安装服务器程序
如果你使用一个客户端程序,你可以轻松地为每个复制的文件添加一个数字签名文件,但正如我上面所说的那样,这是一种很差的安全实践,并且增加了很少的安全性。至少该程序应该是可执行的并且不可读,并且源应该被隐藏。最好记录复制文件的用户,并询问他们发现了什么问题。
我无法启动Tomcat服务,所以我唯一的选择是使用JNI/JNA,而标准方式似乎有点复杂。现在我需要用C语言编写一个复制文件的程序,对吧? –
@YoussefSaih:看看我的编辑另一种方式... –
谢谢,我发现这个解决方案在C#中,我不知道我可以在java中做到这一点[链接](http://stackoverflow.com/a/8271759/4810161) –