我已经创建了一个Windows服务,它通过WCF接受来自远程计算机的命令。其中一个命令是运行指定的可执行文件(让我们忽略这种功能的安全含义)。
在我的服务中,我使用Process.Start()来运行可执行文件。如果可执行文件在计算机本地,则一切正常,但如果它在远程文件共享上,则会失败,不会出现错误(或者更准确地说,只是挂起)。我怀疑问题是它触发了标准的Windows“未经验证的发布者”警告,如果他们双击远程系统上的可执行文件,就会看到。
有没有什么方法可以从我的服务中绕过这个,这样我就可以真正运行任何可执行文件了?正如我所说的,我理解允许它运行任何可执行文件的安全含义,但这确实是我需要的。我会认为这个警告只是一个用户模式的概念,但它似乎真的阻碍了我的服务。
想法?
发布于 2010-05-01 09:08:58
我也有同样的问题。你关于“未经验证的出版商”的警告是对的。
我的解决方案是将EXE复制到本地的%TEMP%文件夹中,并从那里启动它。在我的例子中,这是最好的,因为EXE没有依赖项。
发布于 2010-05-01 08:39:04
您可能需要检查运行该服务的帐户的权限。您可能需要使用具有更多权限的帐户来运行不在计算机上的文件。测试它的一种简单方法是让服务在管理员帐户下运行。如果它有效,那么您就知道问题出在哪里了。
发布于 2010-05-02 00:16:32
也许您应该检查.net框架运行时安全策略并调整区域安全设置。
https://stackoverflow.com/questions/2748383
复制相似问题