ColdFusion 可以在 运行 下使用本地系统帐户访问网络驱动器吗?
Can ColdFusion access a network drive while running under local system account?
我们有一组文件需要 ColdFusion 复制到网络共享。但是,我们无法更改 ColdFusion 服务所在的用户 运行ning,这意味着 ColdFusion 没有足够的权限访问任何网络共享。我们确实有可以访问的用户名和密码,但我们不能在该帐户下拥有整个 ColdFusion 服务 运行ning。
有什么方法可以在 ColdFusion 中执行这些文件复制操作吗?可能在新用户下生成 cfthread,访问底层 java,或使用其他第三方组件?我们的后备方案是创建一个批处理文件,然后 运行 从 Windows Task Scheduler 将本地目录中的所有文件复制到网络共享,但这是一个次优的解决方案,因为它需要在外部进行设置和维护CF 代码库。
一个选项是我过去用过的。但是,它需要访问 cfexecute
标签。如果您有权访问 运行 该标签(某些托管服务提供商不允许),那么您可以执行以下操作。
通过 Window 的共享映射网络驱动器(注意任何输出都被写入 netMessage
变量):
这是您指定远程用户名和密码的地方
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \#remoteServerName#\#remoteShareName#\ #remoteAccountPassword# /user:#remoteServerName#\#remoteAccountUsername#"
variable="netMessage"
timeout="30">
</cfexecute>
通过您刚刚创建的映射驱动器将文件复制到网络驱动器(请注意,任何输出都将写入 robocopyMessage
变量):
我在这里使用 robocopy,建议您查看它而不是仅仅复制
<cfexecute name="C:\WINDOWS\system32\robocopy.exe"
arguments="#localDirectory# \#remoteServerName#\#remoteShareName#\ #robocopyArguments#"
variable="robocopyMessage"
timeout="300">
</cfexecute>
现在通过断开映射的网络驱动器进行清理(注意任何输出都被写入 netMessage
变量):
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \#remoteServerName#\#remoteShareName#\ /d"
variable="netMessage"
timeout="30">
</cfexecute>
如果您愿意,您也可以将此代码放在 cfthread
标签中。
我们有一组文件需要 ColdFusion 复制到网络共享。但是,我们无法更改 ColdFusion 服务所在的用户 运行ning,这意味着 ColdFusion 没有足够的权限访问任何网络共享。我们确实有可以访问的用户名和密码,但我们不能在该帐户下拥有整个 ColdFusion 服务 运行ning。
有什么方法可以在 ColdFusion 中执行这些文件复制操作吗?可能在新用户下生成 cfthread,访问底层 java,或使用其他第三方组件?我们的后备方案是创建一个批处理文件,然后 运行 从 Windows Task Scheduler 将本地目录中的所有文件复制到网络共享,但这是一个次优的解决方案,因为它需要在外部进行设置和维护CF 代码库。
一个选项是我过去用过的。但是,它需要访问 cfexecute
标签。如果您有权访问 运行 该标签(某些托管服务提供商不允许),那么您可以执行以下操作。
通过 Window 的共享映射网络驱动器(注意任何输出都被写入 netMessage
变量):
这是您指定远程用户名和密码的地方
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \#remoteServerName#\#remoteShareName#\ #remoteAccountPassword# /user:#remoteServerName#\#remoteAccountUsername#"
variable="netMessage"
timeout="30">
</cfexecute>
通过您刚刚创建的映射驱动器将文件复制到网络驱动器(请注意,任何输出都将写入 robocopyMessage
变量):
我在这里使用 robocopy,建议您查看它而不是仅仅复制
<cfexecute name="C:\WINDOWS\system32\robocopy.exe"
arguments="#localDirectory# \#remoteServerName#\#remoteShareName#\ #robocopyArguments#"
variable="robocopyMessage"
timeout="300">
</cfexecute>
现在通过断开映射的网络驱动器进行清理(注意任何输出都被写入 netMessage
变量):
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \#remoteServerName#\#remoteShareName#\ /d"
variable="netMessage"
timeout="30">
</cfexecute>
如果您愿意,您也可以将此代码放在 cfthread
标签中。