ColdFusion可以在本地系统帐户下运行时访问网络驱动器吗?

Nic*_*las 3 coldfusion

我们有一组文件需要ColdFusion复制到网络共享.但是,我们无法更改运行ColdFusion服务的用户,这意味着ColdFusion没有足够的权限来访问任何网络共享.我们有一个用户名和密码可以让我们访问,但我们不能在该帐户下运行整个ColdFusion服务.

有没有办法从ColdFusion中执行这些文件复制操作?可能是在新用户下生成cfthread,访问底层java,还是使用其他一些第三方组件?我们的后备是创建批处理文件并从Windows任务计划程序运行它将本地目录中的所有文件复制到网络共享,但这是一个次优的解决方案,因为它需要在CF代码库之外进行设置和维护.

Mig*_*l-F 7

一种选择是我过去使用过的.但是它需要访问cfexecute标签.如果您有权运行该标记(某些托管服务提供商不允许),那么您可以执行以下操作.

通过Window的共享映射网络驱动器(请注意,任何输出都写入netMessage变量):
这是您指定远程用户名和密码的位置

<cfexecute name="C:\WINDOWS\system32\net.exe"
    arguments="use \\#remoteServerName#\#remoteShareName#\ #remoteAccountPassword# /user:#remoteServerName#\#remoteAccountUsername#"
    variable="netMessage"
    timeout="30">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)

通过刚创建的映射驱动器将文件复制到网络驱动器(请注意,任何输出都写入robocopyMessage变量):
我在这里使用robocopy并建议您查看它而不是仅仅复制

<cfexecute name="C:\WINDOWS\system32\robocopy.exe"
    arguments="#localDirectory# \\#remoteServerName#\#remoteShareName#\ #robocopyArguments#"
    variable="robocopyMessage"
    timeout="300">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)

现在通过断开映射的网络驱动器来清理(注意任何输出都写入netMessage变量):

<cfexecute name="C:\WINDOWS\system32\net.exe"
    arguments="use \\#remoteServerName#\#remoteShareName#\ /d"
    variable="netMessage"
    timeout="30">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)

cfthread如果您愿意,也可以将此代码放在标记中.