我们试图使用Windows Scripting host从ASP文件调用CACLS.exe,我们的网页不能执行。应用失败了。为什么会这样?我们从DOS命令提示单步调试这个命令发现CACLS.EXE命令在等待我们使用Y作为Yes来确认操作。一定有一种方法使Yes作为缺省值。
检查命令行选项没有发现任何隐藏开关。就这一点,打开浏览器,访问在线支持发现CACLS.EXE好象应该小心应用。
我们兴奋的发抖,发现了文章Q135268:How to Use CACLS.EXE in a Batch File ( http://support.microsoft.com/support/kb/articles/q135/2/68.asp )。啊哈,好的老DOS重定向。使用通道传输一个Y给CACLS.exe代表Yes。
下面是我们用来建立命令串和从ASP文件调用Windows Scripting Host shell的代码。
'Set Change Permissions for the developer using CACLS.exe
strACLCommand = "cmd /c echo y| CACLS "
strACLCommand = strACLCommand & strVirtualDirectoryPath
strACLCommand = strACLCommand & " /g " & strOwner & ":C"
Set objWSH = Server.CreateObject("WScript.Shell")
objRTC = objWSH.Run (strACLCommand , 0, True)
Set objWSH = Nothing
这可能不是可伸缩性最好的解决方案。一个定制组件可以在大型的应用程序上更好的帮助你。如果你需要一个,Artisans软件有一个免费组件( http://www.softartisans.com/softartisans/safilemanager.html )允许你通过他的对象模型改变文件夹上的权限。(它也有一些其他很酷的特性,例如以点式输入/输出图像,操作.ini文件和更多。)
我们最终的代码证实我们所做的一切是值得的。
Response.Write("<B>Web Application Created Sucessfully</B><BR>")
Response.Write("Path : "& strVirtualDirectoryPath & "<BR>")
Response.Write("Script Permissions : "& bolScriptPermissions & "<BR>")
Response.Write( strOwner & " has been granted change permissions<BR>")
%>
</BODY>
</HTML>
那就是它。当寻找问题的解答时最重要的使记住使用多种资源。列表服务器,FAQs和微软知识库就包含了这一类的文章。
现在是新闻 由于我们在每一期ASP专栏中收到的热烈的反响,我们将把我们的栏目专门用于这种技术。可以预见的变化是,我们将介绍著名的Jeff Sandquist。那么有什么让人伤感的呢?Tom Moran将离开Servin' It Up--但是如果你将来在其他地方看到他时不要感到太惊奇。
Jeff Sandquist(微软最好的法裔加拿大人之一)是开发者支持的Active Server Pages扩大组成员之一,也是Visual InterDev MVP程序( http://support.microsoft.com/support/supportnet/supportpartners/mvps/brochuregeneral.asp)的主要负责人。







