我目前有以下代码通过WPF应用程序上的数据网格中的按钮启动:
private static string GetStandardBrowserPath()
{
string browserPath = string.Empty;
RegistryKey browserKey = null;
try
{
//Read default browser path from Win XP registry key
browserKey = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);
//If browser path wasn't found, try Win Vista (and newer) registry key
if (browserKey == null)
{
browserKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http", false); ;
}
//If browser path was found, clean it
if (browserKey != null)
{
//Remove quotation marks
browserPath = (browserKey.GetValue(null) as string).ToLower().Replace("\"", "");
//Cut off optional parameters
if (!browserPath.EndsWith("exe"))
{
browserPath = browserPath.Substring(0, browserPath.LastIndexOf(".exe") + 4);
}
//Close registry key
browserKey.Close();
}
}
catch
{
//Return empty string, if no path was found
return string.Empty;
}
//Return default browsers path
return browserPath;
}
这将返回浏览器路径,如下所示:
"c:\\program files\\mozilla firefox\\firefox.exe -osint -url %1"
我想要做的是在.exe的末尾添加另一个命令行以强制浏览器以私有模式打开,最终用户知道这将发生,但我不确定如何执行此操作。我想要做的浏览器是:
e.g。
"c:\\program files\\mozilla firefox\\firefox.exe -private -osint -url %1"
或
"c:\\program files (x86)\\google\\chrome\\application\\chrome.exe -incognito -- %1"
答案 0 :(得分:1)
尝试code
以下使用默认浏览器打开特定url
即使private mode
string BrowserName = string.Empty;
using (RegistryKey userChoiceKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice"))
{
if (userChoiceKey == null)
{
BrowserName = "UNKNOWN";
}
object progIdValue = userChoiceKey.GetValue("Progid");
if (progIdValue == null)
{
BrowserName = "UNKNOWN";
}
switch (progIdValue.ToString())
{
case "IE.HTTP":
BrowserName = "INTERNETEXPLORER";
break;
case "FirefoxURL":
BrowserName = "FIREFOX";
break;
case "ChromeHTML":
BrowserName = "CHROME";
break;
default:
BrowserName = "UNKNOWN";
break;
}
string url = "http://www.google.com";
switch (BrowserName)
{
case "INTERNETEXPLORER":
System.Diagnostics.Process.Start("iexplore.exe", "-private " + url);
break;
case "FIREFOX":
System.Diagnostics.Process.Start("firefox.exe", "-private-window " + url);
break;
case "CHROME":
System.Diagnostics.Process.Start("chrome.exe", "-incognito " + url);
break;
case "UNKNOWN":
System.Diagnostics.Process.Start("iexplore.exe", "-private " + url);
break;
}
}
答案 1 :(得分:0)
我假设您尝试从控制台或Windows窗体或WPF应用程序运行此操作?您可以使用.Net Process
执行此操作。类似的东西:
var targetSite= "<website you want to open>";
using (var process = new Process())
{
// Get Default Browser from Registry here
// see http://stackoverflow.com/questions/13621467/how-to-find-default-web-browser-using-c
switch (browserType)
{
case "Chrome":
process.StartInfo.FileName = @"<path to your chrome browser exe>";
process.StartInfo.Arguments = url + " --incognito";
break;
case "Mozilla":
......
default:
// Open in IE?
process.Start();
}
答案 2 :(得分:0)
希望这会有所帮助,并使用Firefox和Chrome进行测试
public static void GetPrivateBrowserPath()
{
//string standardBrowserPath = $@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
string standardBrowserPath = $@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
string privateModeParam = string.Empty;
if (standardBrowserPath.ToUpper().Contains("FIREFOX"))
privateModeParam = "-private-window";
if (standardBrowserPath.ToUpper().Contains("CHROME"))
privateModeParam = "-incognito";
Process.Start(standardBrowserPath, privateModeParam );
}
答案 3 :(得分:0)
这是我使用其他人员帖子中的元素的最终工作代码:
private void LaunchURLButton_Click(object sender, RoutedEventArgs e)
{
object url = ((Button) sender).CommandParameter;
string privateModeParam = string.Empty;
string UrlFromDb = (string) url;
string browserName = GetDefaultBrowserPath();
if (string.IsNullOrEmpty(browserName))
{
MessageBox.Show("no default browser found!");
}
else
{
if (browserName.Contains("firefox"))
{
privateModeParam = " -private-window";
}
else if ((browserName.Contains("iexplore")) || (browserName.Contains("Opera")))
{
privateModeParam = " -private";
}
else if (browserName.Contains("chrome"))
{
privateModeParam = " -incognito";
}
Process.Start(browserName, $"{privateModeParam} {UrlFromDb}");
}
}