mjo*_*hns 3 asp-classic iis-7.5
我正在尝试将现有系统从Windows XP Professional/IIS 5.1升级到Windows 7旗舰版(32位)/ IIS 7.5.原始系统运行了一个经典的ASP网站(仅适用于localhost),该网站使用"ASPExec"在本地计算机上启动桌面应用程序(.bat,.cmd,.exe等).在Windows 7 Ultimate/IIS 7.5下,应用程序无法从ASP页面启动.
作为测试(最终目标不是启动记事本),我尝试过:
<%
Set Executor = Server.CreateObject("ASPExec.Execute")
Executor.Application = "notepad.exe"
Executor.ShowWindow = True
strResult = Executor.ExecuteWinApp
%>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<%
Set wshell = CreateObject("WScript.Shell")
wshell.run "notepad.exe"
Set wshell = Nothing
%>
Run Code Online (Sandbox Code Playgroud)
这两种方法都会导致notepad.exe显示在Windows进程列表中,但无法在桌面上启动应用程序.对于我尝试运行的任何.exe都是如此,而.bat或.cmd文件根本无法执行任何操作.
在IIS 5.1中,ASP应用程序的原始作者使用"IIS Admin"服务和"World Wide Web Publishing"服务上的"允许服务与桌面交互"选项来实现此功能.除了允许桌面交互式服务之外的所有问题,IIS 7不再使用"IIS Admin"服务,因此这不是一个选项.
我正在寻找Windows/IIS方面的解决方法或ASP中的其他选项,可能会产生相同的期望的最终结果.
您将无法使用Windows 7/IIS 7.5执行此操作.这工作的原因是因为您运行的是IIS5.1.回到IIS5.0/5.1时代,您有三种不同的流程模型:
inetinfo.exe进程内运行很可能您的IIS5.1实例配置为在"进行中"模式和SYSTEM帐户下运行.因为您可以将IIS服务配置为与桌面交互,并且因为您的Classic ASP脚本正在此过程中执行,所以它能够启动可执行文件并显示在桌面上.
在IIS7中,生活是不同的.您的代码将在应用程序池进程内运行,该进程根据需要进行分解.无法配置池进程(w3wp.exe)并允许它们与桌面交互,即使在本地系统帐户下运行也是如此.
与IIS6不同,您无法将IIS7配置为表现为IIS5; IIS7是一个自下而上重写的新架构.
一种可能的解决方法是使用HTTP端点编写简单的WCF服务,该端点在用户登录时启动(托管在隐藏或最小化自身的Windows应用程序中的通知区域).然后,您可以使用类似的东西从Classic ASP代码调用此服务,MSXML2.ServerXMLHttp并获取WCF服务代表您启动这些进程.
Keith Brown的" Windows安全Windows开发人员指南 "第29章的这份存档副本解释了使服务应用程序与桌面交互所涉及的技巧:
Windows安全性.NET开发人员指南 - 第29章 - 如何从守护程序显示用户界面(来源:archive.org)
引用:
选项一是进入交互式窗口站,第二个选项是让交互式窗口站中已有一个进程为您显示一个UI.
将守护进程放入交互式窗口站(
WinSta0)以便它拥有自己的用户界面的简单方法是将其打包为运行的服务,SYSTEM并选中"允许服务与桌面交互"的复选框.这告诉SCM在SYSTEM登录会话(WhatIsALogonSession)中启动服务进程并将您的进程附加到WinSta0代替SYSTEM通常运行守护进程 的非交互式窗口站Service-0x0-0x3e7$.
这是你可能已经在你的XP盒子上.但正如我所解释的那样,没有办法配置工作进程来执行此操作,因为您无法配置" 允许服务与桌面交互. "标志,即使您可以将池配置为作为本地SYSTEM帐户运行.书写的时候,这适用于Windows 2000/2003.随着Windows Vista/2008及更高版本的出现,您将获得UAC的额外复杂性并且也可以通过它.
您应该考虑的是选项二:使用两个进程而不是一个进程.必须在交互式用户的登录会话中启动一个进程
WinSta0.它应该包含您需要的所有用户界面元素,并且它可以使用您熟悉的任何安全形式的进程间通信连接到您的守护进程.
这基本上就是我的建议.
| 归档时间: |
|
| 查看次数: |
4011 次 |
| 最近记录: |