[英]How to determine whether a specific application is installed on my domain computers
如何確定是否使用C#在我的域計算機上安裝了特定的應用程序?
忘了提。 我擁有該域的管理員權限
我無法回答人們的問題...所以我繼續編輯自己的帖子。 ..該應用程序已在“控制面板”中的“添加/刪除”下注冊
因為您的應用程序實際上存儲在控制面板中,所以這意味着它正在生成注冊表項。 由於它為msiexec
實用程序生成密鑰。 您的申請信息將在這里:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
這意味着您的注冊表將包含以下類別的信息:
它包括很多,除了那三個是最可行的。
因此,您實際上可以實現一些基本的遠程處理,讓服務器強制用戶運行將運行您的應用程序的.bat
等。
但是關鍵值之一是您可以在注冊表中進行簡單的循環以確定是否已安裝。
這是一個教程 。
為了進行迭代,您需要執行以下操作:
// Registry 'MSIEXEC Guid'
public void RegistryFix()
{
// Create a Registry Instance.
RegistryKey rKey = Registry.LocalMachine.OpenSubKey(@"\\SOFTWARE\\Microsoft
\\Windows\\CurrentVersion\\Uninstall", true);
// Loop Our Instance:
foreach( string sub in rKey.GetSubKeyNames() )
{
#region Error Handling for 'Registry MSIEXEC'
try
{
// Locate Boulevard Instance
RegistryKey blvd = rKey.OpenSubKey(@"\\SOFTWARE\\Microsoft
\\Windows\\CurrentVersion\\Uninstall\\" + sub);
// Specify Boulevard Display Name String
string blvdDisplay = blvd.GetValue("DisplayName").ToString();
// Search For:
if (blvdDisplay.Contains("Boulevard"))
{
// Now Obtain Uninstall String.
string blvdUninstall = blvd.GetValue("UninstallString").ToString().Replace(@"/u", @"/f");
// Execute
Process u = Process.Start(blvdUninstall);
u.WaitForExit();
}
}
#endregion
// Unhandled / Null Error
catch
{
// Write Exception:
Console.WriteLine("Null Value Detected");
throw new Exception("Invalid or Null Registry Value Detected.");
}
}
}
因此,上面的示例正在運行遞歸循環,並在那些子項中搜索msiexec
以便它可以啟動修復。 因此,我並沒有發布所有代碼來實際完成此操作,但重點是向您展示了如何搜索那些注冊表項,以便您可以選擇最適合自己的需求。
現在,它被設計為在本地運行,因此您可能必須創建一個可執行文件,然后創建一個logon.bat
以便一旦用戶登錄它,便會檢查它是否已安裝並運行您的應用程序。
您可以使用Remoting,為了遠程運行應用程序,有很多變體。 您必須找到最適合您的東西。 希望這對您有幫助。
為了稍微解釋一下上面的代碼片段,在我的實現中,本地計算機將啟動該應用程序。 它貫穿診斷階段,嘗試修復遇到的常見錯誤。 計算大量應用程序的最簡單方法是將我們的應用程序鏈接到存儲所有產品Guid的數據庫。
因此,您的請求非常有可能。 這應該可以解決問題,並指出您還需要實際實施該方法的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.