【发布时间】:2014-10-08 01:52:02
【问题描述】:
所以这是我的问题:
我已经启动了一个 .bin 文件,它只是一个 .exe,重命名为 .bin,具有管理员权限。
这是我所拥有的:
PSI.FileName = "Client.bin";
PSI.WorkingDirectory = Directory.GetCurrentDirectory();
PSI.UseShellExecute = false;
PSI.Verb = "runas";
Process.Start(PSI);
我还在清单中设置了 requireAdministrator。
我必须将 UseShellExecute 设置为 false,这是我能找到的将 .bin 作为 .exe 启动的唯一方法。但是,根据Here,runas 和清单仅在 UseShellExecute 设置为 true 时使用。
问题:如何以提升的权限启动非 .exe 进程?
【问题讨论】:
-
那么,为什么不能使用 ShellExecute?如果文件是有效的 PE 可执行文件,则文件扩展名是什么无关紧要。
-
为什么不重命名文件?
-
查看应用清单文件,您可以指定您的应用需要提升的权限。因此,如果我没记错的话,您从应用程序中启动的任何进程都应该以提升的权限运行。
-
如果您设置了 UseShellExecute,它会尝试启动文件,就像您双击它一样。因此,由于 .bin 文件不存在文件关联,因此存在异常。 @Jason,仅当 ShellExecute 为真时才考虑到这一点。另外,不能重命名文件,它是给客户的,而且“不可能”