我正在尝试使用asp.net应用程序插入msi文件。当我在管理员模式下运行visual studio它工作正常,但是当我在正常模式下运行它时,它无法正常工作。 我曾尝试过以下代码:
string installerFilePath;
installerFilePath = @"D:\ActivexPractice\test\test\NewFolder1\setup.msi";
System.Diagnostics.Process installerProcess = System.Diagnostics.Process.Start(installerFilePath, "/q");
任何人都可以指导我 没有管理员的权利如何安装
答案 0 :(得分: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();
答案 1 :(得分:0)
如果MSI需要管理员权限才能安装,那么它将要求在UI安装中提升。您的/ q失败,因为静默安装确实是静默的,不会提示提升。请注意,限制用户不能仅仅因为他们正在进行安装而破坏安全规则。
因此,在这种情况下,您需要提升启动过程,无论是以管理员身份运行还是向其提供requiresAdministrator清单,以便它要求提升。
当您启动安装时,您需要确保使用提升状态来启动安装。保证这一点的最简单方法是直接从代码中调用(p / invoke to ...)MsiInstallProduct()。 Process.Start的问题是默认情况下ProcessStartInfo.UseShellExecute为true,并且您的提升状态(如果有的话)将不会用于启动安装。启动安装时,它需要是CreateProcess类型的执行而不是ShellExecute类型,以便使用提升的凭据。
答案 2 :(得分:0)
private void installMSI(字符串路径) { string[] allFiles = Directory.GetFiles(path, "*.msi");
<uses-permission android:name="android.permission.VIBRATE"/>