作为系统运行时,程序不会从Internet下载文件

时间:2014-09-06 03:58:17

标签: windows networking

我们创建了一个从互联网网站下载文件的小型Windows程序。它对大多数PC都有罚款。在一个特定的客户情况下,程序失败。如果程序以普通用户或管理员身份运行,但不能作为本地系统运行,则可以下载文件。该程序是Windows服务的一部分,因此必须作为本地系统运行。有问题的PC是域的一部分。我已经读过Local System是一个匿名帐户,没有网络访问权限。即使访问互联网上的文件,这可能是问题吗?

2 个答案:

答案 0 :(得分:0)

请注意,这应该是评论,而不是答案,我还不能发表评论 要更深入地了解问题,可以创建一个与服务具有相同权限的cmd。默认情况下,这将是本地系统。我想它也适用于PowerShell,但我不清楚它的含义。

sc create debugcmd binpath= "cmd /K start" type= own type= interact
sc start debugcmd

最后一个命令会给你一条错误信息,类似于The service did not respond to the start or control request in a timely fashion.,可以安全地忽略它 此片段将在会话0中创建一个shell(请参阅Session 0 isolation),但由于我们将服务声明为交互式,因此您可以访问它。从那以后,你可以开始诊断。

此处提醒:您在该cmd中进行的每次通话都将具有本地系统权限。当您start另一个应用程序或以其他方式调用子进程时,它将继承这些权限。

请记住在完成后删除服务,因为它会带来很大的安全风险:

sc delete debugcmd

答案 1 :(得分:0)

这是一个MS错误。我已经实现了MSDN推荐的解决方案,效果很好。这是原始代码:

   var filePath = "https://someurlhere";
   var xsl = new ActiveXObject("Msxml2.DOMDocument.3.0");
   xsl.async = false;
   xsl.validateOnParse = false;
   xsl.load(filePath);

如果MSXML在服务器端或客户端多核环境中运行时,DOMDocument通过HTTP加载XML文件,则加载方法可能会失败。

修复方法是在xsl.async = false;

下添加以下语句
   xsl.setProperty("ServerHTTPRequest", true);

有关详情,请访问: http://support.microsoft.com/kb/281142

感谢所有人和Remy Lebeau特别感谢他们的帮助。