我有一個C#應用程序應用程序在某種程度上工作。我需要做的是繼續執行,如果一臺計算機(給定一個IP地址)正在運行一個應用程序(TEKBSS.exe)。我怎樣才能做到這一點?有人能幫我嗎?檢查應用程序是否在網絡上運行PC
回答
查找到:
System.Diagnostics.Process
Process p = new Process();
p.StartInfo.FileName = "TEKBSS.exe";
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();
編輯:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Runtime.CompilerServices;
using System.Security;
public class MainClass
{
public static void Main()
{
Process[] allProcs = Process.GetProcesses("RemoteMachineOnYourNetwork");
foreach (Process p in allProcs)
Console.WriteLine(" -> {0} - {1}", p.ProcessName, p.PeakWorkingSet64);
}
}
我知道這是.net代碼。但我前一陣子也這樣做了。希望它會給你一個想法,我會嘗試和轉換。只要你有權限,你可以在你的代碼中執行命令pushd
。您可以嘗試在命令行中執行第一,確保你可以得到的。
//pushes into the Given Machine on the C:\ and filters for your program
Dim sCommand as String = "pushd \\<MachineName>\C$ && tasklist.exe /FI ""IMAGENAME eq <NameOfExecutable>.exe""
//execute command from program
Shell("cmd.exe /c" & sCommand. AppWinStyle.Hide, True);
您將最有可能要執行popd
後返回到你的機器上的目錄。
讓我看看我是否可以轉換爲C給你。我會編輯一下。
編輯
您可以通過WMI做到這一點。您將需要適當的憑據來訪問遠程機器。
System.Management命名空間包括從C#使用WMI的功能。
在這裏你去:
// Don't forget...
// using System.Management; <-- Need to add a reference to System.Management, too.
ManagementScope scope = new ManagementScope(@"\\192.168.1.73\root\cimv2");
string query = "SELECT * FROM Win32_Process WHERE Name='TEKBSS.exe'";
var searcher = new ManagementObjectSearcher(query);
searcher.Scope = scope;
bool isRunning = searcher.Get().Count > 0;
範圍告訴WMI什麼機器來執行的查詢,所以不要忘了相應更改IP地址。
然後ManagementObjectSearcher將向機器查詢名爲TEKBSS.exe的所有進程的列表。
錯誤史蒂夫,說什麼!大聲笑不知道你說什麼笑lol – Privesh
WMI是Windows管理界面。它被諸如Systems Management Server等工具用於遠程詢問和操縱機器。您可以使用WMI來確定特定進程是否在遠程計算機上運行 - 這正是您想要執行的操作。我鏈接到的文章顯示了使用VBScript執行此操作的示例,但您可以從其他語言調用WMI API。 –
您可以使用WMI查詢在遠程機器上,如正在運行哪些程序的信息。
您將需要引用System.Management.dll
,並且在遠程計算機上具有訪問WMI的適當權限。
using System;
using System.Linq;
using System.Management;
namespace Bling
{
public static void Main()
{
const string Host = "vmhost01";
const string Path = (@"\\" + Host + @"\root\CIMV2");
const string Exe = "TEKBSS.exe";
var queryString = string.Format("SELECT Name FROM Win32_Process WHERE Name = '{0}'", Exe);
var query = new SelectQuery(queryString);
var options = new ConnectionOptions();
options.Username = "Administrator";
options.Password = "*";
var scope = new ManagementScope(Path, options);
var searcher = new ManagementObjectSearcher(scope, query);
bool isRunnning = searcher.Get().Count > 0;
Console.WriteLine("Is {0} running = {1}.", Exe, isRunnning);
}
}
用戶名和密碼對我來說是一個問題,因爲我們的環境在全國範圍內的政策是這樣的,遠程PC必須每隔一段時間更改密碼月,這是一個通用的程序,該國的不同地區將使用它來連接到不同的遠程PC(運行Tekbss軟件的PC) – Privesh
@Privesh假設您的計算機在Windows域中。您需要專門設置一個帳戶,以便訪問您的域中的WMI信息。您可以精確調整帳戶可以訪問的WMI信息。這是系統管理員要解決的問題。 –
- 1. 檢查部署應用程序的網絡是否已啓動並運行
- 2. 檢查Phonegap應用程序是否在iPad或iPhone上運行
- 3. 在PC上運行vaadin應用程序
- 4. 查找在網絡上運行的應用程序
- 5. 檢查應用程序是否在服務器上運行或本地運行
- 6. 檢查應用程序是否由網絡瀏覽器啓動
- 7. 檢查路徑是否在網絡上
- 8. 檢查程序是否正在運行
- 9. 檢查程序是否正在運行
- 10. 如何檢查MongoDB服務器是否在pc上運行
- 11. 如何檢查應用程序是否正在運行,否則運行它?
- 12. 如何檢查特定進程是否在遠程PC /服務器上運行?
- 13. 網絡檢查應用程序flex
- 14. 檢查應用程序是否在前臺運行
- 15. 如何檢查WPF應用程序是否已在運行?
- 16. android:如何檢查應用程序是否在後臺運行
- 17. 檢查我的應用程序是否在Android中運行
- 18. 檢查當前的WPF應用程序是否正在運行?
- 19. 檢查應用程序是否正在運行?
- 20. 檢查應用程序是否正在運行
- 21. 黑莓:檢查是否無頭應用程序正在運行
- 22. 如何檢查應用程序是否真的在運行?
- 23. 檢查某個特定應用程序是否在運行iOS?
- 24. 檢查應用程序是否已在運行
- 25. 在網絡上使單個PC應用程序工作
- 26. 檢測我的應用程序是否在電話上運行
- 27. iPhone應用程序在後臺運行時檢測WiFi網絡
- 28. 是否可以在WordPress網站上運行Python應用程序?
- 29. 在Heroku上運行網絡應用程序
- 30. 運行Dajngo Web應用程序公開在網絡上
他試圖告訴一個過程是否已經運行,而不是啓動一個新過程(根據原始問題)。 –
@Steve 看看WaitForExit這一行。那是什麼告訴你這個過程結束了。是的,這只是一個建議,他應該從c#開始這個過程... – Lysgaard
id喜歡檢查應用程序(tekbss.exe)是否運行可以說172.16.32.34 – Privesh