谁是使用 CFEXECUTE 调用的批处理文件创建的文件夹的所有者?

Who is the owner of a folder created with a batch file called by CFEXECUTE?

我正在 运行ning ColdFusion 9 添加 Windows 服务器数据中心。我写了一个批处理文件,在系统上创建一个目录。如果我用cfexecute调用cmd.exe到运行的批处理文件,创建目录的所有者是谁?是 运行s ColdFusion 的用户,还是创建批处理文件的用户,或者两者都不是?

我无法创建 Windows 计划任务,我无法使用 cfdirectory 创建文件夹,因为 CF 用户具有更高的权限,甚至 mode=777不起作用。感谢任何意见或见解。

Coldfusion 执行的任何操作都是在运行 coldfusion 服务的用户的上下文中完成的,因此任何 files/folders 也将归该用户所有。 由于它是 windows 服务器,您不能使用 unix 命令更改权限。

如果您有权访问 cfexecute,那么您几乎可以从命令行执行任何操作,因此他们限制 cfdirectory 毫无意义,也许您应该向他们指出这一点。如果他们想限制访问,那么最好使用安全沙箱以及运行服务的用户的权限来执行此操作。

如果使用 Windows,CFX_EXEC 是一个比 ColdFusion 的内置 CFExecute 提供更多功能的选项:

http://adiabata.com/cfx_exec.cfm

它是用 C++ 编写的,应该适用于您可以在 Windows 上成功安装的所有版本的 ColdFusion。它将使您能够 运行 特定帐户下的外部进程,甚至可以执行即时批处理文件创建。

<!--- Credential Check --->
<cf_exec fnc="USER" user="#user#" pwd="#pwd#" domain="#domain#">
<cfif status neq "OK">
    <cfoutput>Error: #MSG#<br>
    Error number: #ERRN#</cfoutput>
<cfelse>
    Credentials OK
</cfif>

<!--- On-the-fly BAT file --->
<cf_exec cmd="cmd.exe" user="#user#" pwd="#pwd#" domain="#domain#">
@echo off
netstat -e
cd c:\
dir "<cfoutput>#dir#</cfoutput>"
ipconfig /all
exit
</cf_exec>

作为从 Java7+ 开始使用一点 NIO 对 , you can check the ownership of a file/directory 的简短补充:

    Paths = createObject("java", "java.nio.file.Paths");
    Files = createObject("java", "java.nio.file.Files");
    fileOrDirectoryToCheck = Paths.get("c:\path\someFolder\", []);
    owner = Files.getOwner(fileOrDirectoryToCheck, []);
    writeDump("Owner: " & owner.getName());