Here is a pretty simple class to get and set UserAgent.
using System.Runtime.InteropServices; public static class UserAgent { [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkGetSessionOption( int dwOption, StringBuilder pBuffer, int dwBufferLength, out int pdwBufferLength, int dwReserved); [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkSetSessionOption( int dwOption, string pBuffer, int dwBufferLength, int dwReserved); const int URLMON_OPTION_USERAGENT = 0x10000001; const int URLMON_OPTION_USERAGENT_REFRESH = 0x10000002; const int URLMON_OPTION_URL_ENCODING = 0x10000004; public static string Value { get { StringBuilder builder = new StringBuilder(512); int returnLength; UrlMkGetSessionOption(URLMON_OPTION_USERAGENT, builder, builder.Capacity, out returnLength, 0); string value = builder.ToString(); return value; } set { UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, value, value.Length, 0); } } }
I had been looking for a decent way to get UserAgent from windows, as opposed to web, when I found Changing the user agent of the WebBrowser control Inspired by the DLLImport of urlmon.dll, I looked in pinvoke.net, and found: http://pinvoke.net/default.aspx/urlmon.UrlMkGetSessionOption
Called by:
namespace GetUserAgent { class Program { // The name of the program that was started by user // See: Assembly.GetEntryAssembly Method () // https://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly.aspx public static string ExecName { get { // The name of the executable that was started by user return System.Reflection.Assembly.GetEntryAssembly().GetName().Name; } } static void Main(string[] args) { foreach (string arg in args) { if ((arg == "/?") || (arg == "-?") || (arg == "--help")) { Console.Out.WriteLine( "For /F \"tokens=*\" %%U In ('{0}') Do Set UserAgent=%%U", ExecName); return; } } string userAgent = UserAgent.Value; Console.Out.WriteLine(userAgent); } } }
This generates the UserAgent value. Argument /? shows how to use it in a command script.