我创建了一个Windows服务,它通过WCF从远程机器接受命令。其中一个命令是运行指定的可执行文件(让我们忽略这些功能的安全含义)。
在我的服务中,我使用Process.Start()来运行可执行文件。如果可执行文件是计算机本地的,那么一切正常,但如果它位于远程文件共享上,则它会失败并且没有错误(或者更准确地说是挂起)。我怀疑问题是它触发了标准的Windows“未验证发布者”警告,人们会看到他们是否双击远程系统上的exe。
有什么方法可以绕过我的服务,这样我才能真正运行任何可执行文件?正如我所说,我理解允许它运行任何可执行文件的安全含义,但这正是我所需要的。我本以为这个警告只是一个用户模式的概念,但它确实似乎妨碍了我的服务。
想法?
答案 0 :(得分:3)
我有同样的问题。你对“未经证实的出版商”的警告是正确的。
我的解决方案是将EXE本地复制到%TEMP%文件夹并从那里开始。就我而言,这是最佳的,因为EXE没有依赖关系。
答案 1 :(得分:1)
您可能想要检查运行该服务的帐户的权限。您可能需要使用具有更多权限的帐户来运行不在框中的文件。测试它的一种简单方法是在管理员帐户下运行服务。如果它有效,那么你知道问题出在哪里。
答案 2 :(得分:0)
也许您应该检查.net框架运行时安全策略并调整区域安全设置。