Forums

Would like some additional command-line switches for rutserv.exe

Aaron Levinson, User (Posts: 9)

Jan 19, 2016 4:30:30 am EST

Currently, in order to display the Internet ID to the user from my software (for a proactive remote assistance support model, which I discussed in more detail in my post to the Licensing forum), I extract it from the Registry, at HKLM\SYSTEM\Remote Utilities\v4\Server\Parameters in the InternetID key value. Then, I extract the <internet_id> value from the XML stored in this key value. Access to HKLM\SYSTEM requires elevated privileges, but that's not an issue for my software. This approach to determining the Internet ID programmatically is fragile, since the way in which this information is stored by Remote Utilities could easily change in a future version of the software. What I'd like to see is a command-line option to rutserv.exe that returns the Internet ID to stdout, perhaps something like /internetid .

In another post, I saw that a user was wondering if it were possible to bind Remote Utilities to a specific network interface. The response was that this was possible in older versions of Remote Utilities but hasn't been available for some time. I'm not asking for a way to do this from the Remote Utilities Host UI--what I am asking for is a command-line option for the /start command that would provide the ability to specify a specific network interface to bind to. On a system with multiple network interfaces, Windows' TCP/IP implementation frequently makes bad choices when it comes to picking the best network interface to use. For example, on a system with a fast Ethernet connection and multiple slower mobile broadband network connections, it usually picks one of the slow mobile broadband network connections, sometimes the slowest of the mobile broadband connections. Windows TCP/IP appears to decide which network interface to pick based on the combination of the interface metric and gateway metric, and it frequently assigns poor choices for the values for each of these metrics. It is possible to change them, and I've done that, but it doesn't work reliably, and the settings will sometimes revert to the defaults after rebooting the system.

In my software, I have an accurate means to detect which network interface would generally result in the best connection to the Internet, so what I'm asking for is something like:

rutserv.exe /start [/networkinterface <identifier>]

The <identifier> parameter could be an IP address, since that is what is needed for the call to bind(), as follows:

sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(0);
addr.sin_addr.s_addr = inet_addr(ipAddress);
int nRet = bind(s, (sockaddr *) &addr, sizeof(addr));

Alternatively, it could be the UUID associated with the network interface in question (as stored in IP_ADAPTER_INFO::AdapterName after a call to GetAdaptersInfo()).

Thanks,
AaronL

Conrad Sallian, Administrator (Posts: 1163)

Jan 19, 2016 6:43:25 am EST

Aaron Levinson wrote:
This approach to determining the Internet ID programmatically is fragile, since the way in which this information is stored by Remote Utilities could easily change in a future version of the software.
Yes, and it most definitely will. For example, in the upcoming update we'll store the settings in a different registry entry than where they are stored now. Instead of:

HKEY_LOCAL_MACHINE\SYSTEM\Remote Utilities\

the settings will be in

HKEY_LOCAL_MACHINE\SOFTWARE\Usoris\





In another post, I saw that a user was wondering if it were possible to bind Remote Utilities to a specific network interface. The response was that this was possible in older versions of Remote Utilities but hasn't been available for some time. I'm not asking for a way to do this from the Remote Utilities Host UI--what I am asking for is a command-line option for the /start command that would provide the ability to specify a specific network interface to bind to. On a system with multiple network interfaces, Windows' TCP/IP implementation frequently makes bad choices when it comes to picking the best network interface to use. For example, on a system with a fast Ethernet connection and multiple slower mobile broadband network connections, it usually picks one of the slow mobile broadband network connections, sometimes the slowest of the mobile broadband connections. Windows TCP/IP appears to decide which network interface to pick based on the combination of the interface metric and gateway metric, and it frequently assigns poor choices for the values for each of these metrics. It is possible to change them, and I've done that, but it doesn't work reliably, and the settings will sometimes revert to the defaults after rebooting the system.

Thank you for the suggestion. I will forward it to our developers and we'll see what we can do.

* Website time zone: America/New_York (UTC -5)