我们遇到了一个需要解决的有趣情况,我的搜索已经发现了.因此,我呼吁SO社区寻求帮助.
问题是:我们需要以编程方式访问不在我们域中的共享文件,并且不在远程文件共享/ UNC的可信外部域中.当然,我们需要为远程机器提供凭据.
通常,人们可以通过以下两种方式之一解决此问题:
NET USE命令或复制的Win32函数完成NET USE.出于各种各样的原因,我们的安全/网络架构师拒绝了前两种方法.第二种方法显然是一个安全漏洞; 如果远程计算机受到危害,则本地计算机现在处于危险之中.第一种方法是不能令人满意的,因为新安装的驱动器是在程序访问文件期间本地计算机上的其他程序可用的共享资源.尽管这很可能是暂时的,但他们认为这仍然是一个漏洞.
他们对第三个选项开放,但远程网络管理员坚持使用SFTP而不是FTPS,而FtpWebRequest仅支持FTPS.SFTP 是更适合防火墙的选项,我可以使用几个库来实现这种方法,但如果可以的话,我宁愿减少我的依赖项.
我在MSDN上搜索了使用远程文件共享的托管或win32方法,但我没有想出任何有用的东西.
所以我问:还有另外一种方法吗?我是否错过了一个超级秘密的win32功能,可以满足我的需求?或者我必须追求选项3的一些变体吗?
作为LocalSystem运行的C#程序如何临时模拟另一个用户的登录标识?粗略地说,我有一个Windows服务,我想作为LocalSystem运行,但有时模仿用户XYZ(当使用Windows集成安全性连接到数据库时).
最重要的是:有没有办法在不知道其他用户密码的情况下做到这一点?
注意:如果密码是强制性的,则建议安全地存储密码(c#和/或vbscript).