Commit 6b2d7581 authored by Dieter Vandroemme's avatar Dieter Vandroemme

Locate makecert.exe next to the assembly

It was located from the current directory. This can result in a
FileNotFoundException when an application that uses Titanium-Web-Proxy
is launched from another path, the root certificate is not registered
and capturing is started . E.g.  c:\> test\test.exe
parent 9a5a3483
...@@ -3,6 +3,7 @@ using System.IO; ...@@ -3,6 +3,7 @@ using System.IO;
using System.Diagnostics; using System.Diagnostics;
using System.Collections.Generic; using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.X509Certificates;
using System.Reflection;
namespace Titanium.Web.Proxy.Helpers namespace Titanium.Web.Proxy.Helpers
{ {
...@@ -112,14 +113,16 @@ namespace Titanium.Web.Proxy.Helpers ...@@ -112,14 +113,16 @@ namespace Titanium.Web.Proxy.Helpers
{ {
using (var process = new Process()) using (var process = new Process())
{ {
if (!File.Exists("makecert.exe")) string file = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "makecert.exe");
if (!File.Exists(file))
throw new Exception("Unable to locate 'makecert.exe'."); throw new Exception("Unable to locate 'makecert.exe'.");
process.StartInfo.Verb = "runas"; process.StartInfo.Verb = "runas";
process.StartInfo.Arguments = args != null ? args[0] : string.Empty; process.StartInfo.Arguments = args != null ? args[0] : string.Empty;
process.StartInfo.CreateNoWindow = true; process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false; process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = "makecert.exe"; process.StartInfo.FileName = file;
process.Start(); process.Start();
process.WaitForExit(); process.WaitForExit();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment