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