从 Sharepoint Web 部件运行 exe
Posted
技术标签:
【中文标题】从 Sharepoint Web 部件运行 exe【英文标题】:Run exe from Sharepoint web part 【发布时间】:2013-05-02 14:28:04 【问题描述】:我在共享点 Web 部件中有一个按钮,单击该按钮应该启动计算器:
protected void Button1_Click(object sender, EventArgs e)
Process process = new Process();
process.StartInfo = new ProcessStartInfo("Calc.exe");
process.Start();
但是,当单击按钮时,什么也没有发生。谁能告诉我如何从共享点 Web 部件启动应用程序?
【问题讨论】:
【参考方案1】:坦率地说,这是不可能的。您编写的代码在 Web 应用程序用户的安全上下文中的 SharePoint 服务器上执行。因此,如果发生任何事情,则会为网络应用用户打开一个计算器,当然不会为您的用户打开。
如果您想做这样的事情,您必须恢复到客户端脚本技术,例如Silverlight
或 javascript
。但是,您必须处理权限问题,因为脚本通常无法访问本地硬盘以提高安全性。
【讨论】:
但是我可以使用上面的代码从普通的 asp.net 网页启动 calc.exe,它可能具有相同的安全限制(?) 没有。 SharePoint 在标准 ASP.NET Web 应用程序上设置了许多安全限制。如果您在尝试此类请求后检查 ULS 日志,您将看到错误。如果您希望应用程序在客户端打开,您唯一的选择是使用 JavaScript 或 Silverlight,正如 @spa 所说。 最好我开始学习 JavaScript,因为 silverlight 将永远无法运行本地 exe @Calanus:JavaScript 也不会。当你说一个普通的 ASP.net 网页可以做到这一点时,你确定你不是在 Localhost 上运行它吗?因为 Process.Start 将在 Web 服务器上启动进程,而不是在客户端上。您不能从网站上在客户端上启动 EXE(这是一件好事)【参考方案2】:从网页运行可执行文件是非常不可取的,因为这需要您将浏览器安全设置降低到可能危及客户端 PC 的级别,因为几乎任何软件都可以在没有用户的情况下下载和执行即使知道。 正如前面的答案所指出的,您编写的代码将在服务器上运行计算器,而不是在客户端上。它适用于您的开发机器,因为它既是服务器又是客户端,这在现实世界中不起作用。唯一的方法是使用一些客户端代码,例如 Javascript 或 Silverlight,但我不建议这样做。最好的替代方法是将浏览器托管的计算器直接添加到您的 Web 部件中,例如使用 jQuery 的计算器:第一个搜索结果:http://keith-wood.name/calculator.html
【讨论】:
以上是关于从 Sharepoint Web 部件运行 exe的主要内容,如果未能解决你的问题,请参考以下文章
SharePoint - 将 Web 部件从模板网站克隆到新网站 - XML 错误
如何在 SharePoint 中将 Web 部件从一个站点放到另一个站点?
从 SharePoint 2010 中的 Web 模板在 Wiki 页面上设置默认 Web 部件?
如何从处理此事件的方法中将单击按钮的 ID 检索到 SharePoint 2013 Web 部件中?