2017-02-24 5 views
-1

を使用してMSIファイルをインストールします。私は管理者モードでビジュアルスタジオを実行するときは正常に動作していますが、私はそれが正常に動作していないモードで実行します。 私は、次のコードしようとした:私はasp.netアプリケーションを使用してMSIファイルを挿入しようとしていますC#の

string installerFilePath; 
installerFilePath = @"D:\ActivexPractice\test\test\NewFolder1\setup.msi"; 
System.Diagnostics.Process installerProcess = System.Diagnostics.Process.Start(installerFilePath, "/q"); 

すべてのボディは、管理者なしで、それをインストールする方法この に私を導くことができる権利

+0

インストールに管理者権限が必要な場合は、何もできません –

+0

msiファイルを作成する際に、私は全員に権利を与えています。フルコントロール –

+1

はMSI自体には権利がありません。 MSI_を実行する権利を人に与えることができますが、MSIが実行する_そのものが異なる権利を必要とする可能性があります。 MSIで指定されたインストールアクションに管理者権限が必要な場合、MSIを実行しているユーザ(またはMSIを呼び出すC#コードを実行しているユーザ)は、すべてのアクションを実行するために必要な権限を持っている必要があります。 – ADyson

答えて

0

をインストーラを実行します。msiexec.exeを使用することができます。サンプルコードです

 Process installerProcess = new Process(); 
     ProcessStartInfo processInfo = new ProcessStartInfo(); 
     processInfo.Arguments = @"/i D:\ActivexPractice\test\test\NewFolder1\setup.msi /q"; 
     processInfo.FileName = "msiexec"; 
     installerProcess.StartInfo = processInfo; 
     installerProcess.Start(); 
     installerProcess.WaitForExit(); 
0

MSIにインストールするには管理者権限が必要な場合は、UIのインストールで高度を尋ねます。サイレントインストールが本当にサイレントであり、昇格を促さないため、/ qは失敗しています。制限されたユーザーは、インストールを実行しているという理由だけでセキュリティルールを破ることはできません。

だから、そのような状況であなたの起動プロセスは、管理者として実行しているか、それが昇格を要求するので、それをrequiresAdministratorマニフェストを与えることのいずれかによって、上昇していることが必要となります。

あなたがあなたの上昇状態がインストールをオフに解雇するために使用されていることを確認する必要があり、インストールをオフに解雇。これを保証する最も簡単な方法は、コードから直接(p/invoke to ...)MsiInstallProduct()を呼び出すことです。 Process.Startの問題は、デフォルトではProcessStartInfo.UseShellExecuteがtrueであり、昇格状態(もしあれば)がインストールの開始に使用されないことです。インストールが開始されると、昇格した資格情報が使用されるように、ShellExecuteタイプではなくCreateProcessタイプの実行が必要です。

関連する問題