C# を使用して、ドメイン コンピューターに特定のアプリケーションがインストールされているかどうかを確認する方法は?
言及するのを忘れました。ドメインの管理者権限を持っています
人々の質問に答えることができないので、投稿を編集し続けます。.. コントロール パネルの [追加と削除] にアプリケーションが登録されている
C# を使用して、ドメイン コンピューターに特定のアプリケーションがインストールされているかどうかを確認する方法は?
言及するのを忘れました。ドメインの管理者権限を持っています
人々の質問に答えることができないので、投稿を編集し続けます。.. コントロール パネルの [追加と削除] にアプリケーションが登録されている
アプリケーションは実際にはコントロール パネル内に保存されているため、レジストリ キーを生成していることになります。msiexec
ユーティリティのキーを生成するためです。あなたのアプリケーション情報はここにあります:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
つまり、レジストリには次のカテゴリの情報が含まれます。
これら3つが最も実行可能であることを除いて、それにはさらに多くのものが含まれています.
したがって、実際にいくつかの基本的なリモーティングを実装し.bat
たり、アプリケーションを実行するサーバーをユーザーに強制的に実行させたりすることができます。
しかし、重要な価値の 1 つは、レジストリ内で単純なループを実行して、インストールされているかどうかを判断できることです。
ここにチュートリアルがあります。
反復するには、次のようなことを行う必要があります。
// 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
ため、ユーザーがログインすると、インストールされているかどうかを確認してアプリケーションを実行します。
アプリケーションをリモートで実行するには、さまざまなバリエーションがあります。あなたに最適なものを見つける必要があります。うまくいけば、これはあなたを助けます。
上記のコード フラグメントについて少し説明すると、私の実装ではローカル マシンがアプリケーションを起動します。診断フェーズを実行して、発生した一般的なエラーの修正を試みます。多数のアプリケーションを計算する最も簡単な方法は、すべての製品 Guid を格納するデータベースにリンクすることでした。
したがって、あなたの要求は非常に可能です。これで問題が解決し、実際に実装するためにどこに行く必要があるかがわかります。