在我们的生产服务器上,win 2008 64 位,在 NETWORK SERVICE 帐户下运行 .NET 3.5 站点,我突然在错误日志中收到此消息“服务器无法打开此程序,因为许可证执行系统已被篡改或损坏”启动wkhtmltopdf.exe 在我的帐户下(或在 SYSTEM 帐户下,使用此处描述的使用签名技术 - http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html) - 成功运行。所有软件都已获得许可,我们已经有一段时间(几周)没有在服务器上安装任何新软件了。
调用 wkhtmltopdf.exe 从页面生成 PDF 时会引发异常。
有谁知道如何找出这里出了什么问题?
这是堆栈跟踪:
[Win32Exception (0x80004005): Windows cannot open this program because the license enforcement system has been tampered with or become corrupted]
System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +614
System.Diagnostics.Process.Start() +56
KPI.DownloadWoordenschatTest() in ..\KPI.aspx.cs:1579
KPI.btnLogin5_Click(Object sender, EventArgs e) in ..\KPI.aspx.cs:1451
KPI.Page_Load(Object sender, EventArgs e) in ..\KPI.aspx.cs:109
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
这是代码片段,其中报告了问题:
Process pdfConverterProcess = new Process();
pdfConverterProcess.StartInfo.FileName = Server.MapPath("~/bin/wkhtmltopdf.exe");
pdfConverterProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pdfConverterProcess.StartInfo.Arguments = String.Format(@" ""{0}"" ""{1}"" --header-html ""{2}&np=1"" --footer-html ""{3}&np=1"" --margin-top 2.5cm --header-spacing 7", requestUrl, filePath, pdfHeaderURL, pdfFooterURL);
pdfConverterProcess.Start(); (this is line 1579)
pdfConverterProcess.WaitForExit();
pdfConverterProcess.Close();