我正在为我的工作写一个Web服务(WCF),我正在寻找一种方法来在其他机器上按需运行脚本 。
我们得到了我们从RDC连接的机器,并且我想从另一个C#程序运行它的脚本 。
另外,我似乎无法找到一种方法来在C#的另一台机器上运行可执行文件。在C机器上运行脚本从其他机器#
0
A
回答
1
为什么你不能找到.net框架,让你运行另一台机器上的可执行文件是一部分原因因为没有一个。
如果您想在远程计算机上运行可执行文件,那么您可能对PsExec(由Micrososft发布的Sysinternals工具)感兴趣。
2
这是可能的通过C#中使用WMI(见http://www.codeproject.com/KB/cs/Remote_Process_using_WMI_.aspx)或通过使用命令行http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx ...但它是你平时不应该做 - 它创造了几个安全问题处理...
编辑 - WMI使用用户/ PW:
connectionoptions
给你提供用户名+密码的可能性 - 看http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.aspx
0
我知道这是一篇旧文章,但我想补充一点,当然可以在没有PsExec的情况下运行远程可执行文件,而许多病毒软件标记为有问题。另外大多数系统管理员不希望在他们的Web服务器上使用PsExec。而且,通过映射驱动器或UNC运行远程可执行文件并不意味着您已安装了许可证,因此可能会失败(或运行演示版),具体取决于软件。
关键是在WCF服务中包装System.Diagnostics.Process
步骤。下面是一个部分示例...
{
// Define a service contract.
[ServiceContract(Namespace = "http://MyDataServices.foo.com")]
public interface IDataService
{
[OperationContract]
bool ProcessStatTransfer(MemoryStream inputCommands, string inputName);
}
// Implement the IDataService service contract in a service class.
public class DataService : IDataService
{
// Implement the IDataService methods.
public bool ProcessStatTransfer(MemoryStream inputCommands, string inputName)
{
try
{
// StatTransferLocation is C:\Program Files\StatTransfer12-64\st.exe
// on the machine that hosts the service
string m_stattransfer_loc = ConfigurationManager.AppSettings["StatTransferLocation"].ToString();
string m_stattransfer_file = ConfigurationManager.AppSettings["CommandFiles"].ToString() + inputName;
using (FileStream m_fsfile = new FileStream(m_stattransfer_file, FileMode.Create, FileAccess.Write))
{
inputCommands.WriteTo(m_fsfile);
}
ProcessStartInfo processInfo = new ProcessStartInfo("\"" + m_stattransfer_loc + "\"");
processInfo.Arguments = "\"" + m_stattransfer_file + "\"";
processInfo.UseShellExecute = false;
processInfo.ErrorDialog = false;
processInfo.CreateNoWindow = true;
Process batchProcess = new Process();
batchProcess.StartInfo = processInfo;
batchProcess.Start();
return true;
}
catch
{
return false;
}
}
.....
然后,您添加一个服务引用并调用该方法。没有映射,PsExec或WMI。这是一个纯粹的C#解决方案。
相关问题
- 1. C#.dll在某些机器上运行,但不在其他机器上运行
- 2. 在其他机器上运行wxHaskell
- 3. wxWidgets在其他机器上运行
- 4. 在远程机器上运行脚本
- 5. 在两台机器上运行脚本
- 6. 在其他机器上运行C++程序
- 7. GCJ:Java本地代码,不会在其他机器上运行
- 8. 如何从本地机器上的脚本在aws-ec2上运行脚本?
- 9. 从本地机器的shell脚本执行远程机器上的shell脚本
- 10. 如何从docker容器在主机上运行shell脚本?
- 11. WPF在开发机器上运行良好,但不能在其他机器上运行
- 12. 上的其他机器
- 13. C#.NET在一台机器上加密XML并在其他机器上解密
- 14. 在其他机器上运行XNA 4.0游戏
- 15. 在其他机器上运行jar文件吗?
- 16. 如何获得XNA 4.0游戏在其他机器上运行?
- 17. 如何从Java远程机器上运行shell脚本?
- 18. 使用exec从Docker容器上的主机运行脚本
- 19. PowerShell - 从远程机器上运行脚本获取返回值?
- 20. 在本地机器上运行Python脚本
- 21. 可以在远程机器上运行本地脚本吗?
- 22. 在本地机器上运行PHP?
- 23. 为多台机器上的其他脚本共享powershell函数?
- 24. SQL脚本在此服务器上运行,但不在其他服务器上
- 25. 从我的本地机器连接在EC2机器上运行的卡夫卡
- 26. 如何在其他机器上的一台机器上运行可执行jar文件
- 27. Apache ProxyPass在其他机器上的Jboss
- 28. 无法找到在其他机器上
- 29. CUIT在其他机器上失败
- 30. 如何在远程机器上运行appium脚本?
PsExec非常适合在远程运行程序,但我似乎无法找到运行脚本的方法。 例如,我想在服务器上运行命令“md c:\ temp”。 我该怎么做?因为PsExec只运行该进程 – Ben2307