I'm trying to figure out how if there's a way to make a hostname resolve to a certain IP without DNS or host file modification.
Using C#, I'm making a request from client to server, but I have to use the hostname in the request so that the certificates will properly authenticate the request. However, my program is meant to run without admin rights, so I can't modify the host file. I have the correct IP and the host name, is there any other way to make the computer resolve the host name to the IP?
It looks like the simplest way to solve this is to create a service with the rights to modify the host file, then invoke that service from the main program. The service runs a single command and exits. Since a service can have elevated status, you can essentially encapsulate admin rights inside a standard user program.
If you're making an HTTP request, then you don't need to resolve the hostname; use the IP address in the URL and pass the host header in your HTTP request.
HttpWebRequest.Host Property
Update: sorry didn't see the certificates requirements. I think you should be able to modify the hosts file during installation (because installation usually happens under admin rights). Add the host name you're interested in to point to 127.0.0.1 (local machine). Then, your app can open a listening socket and act as a proxy, channeling the data to the actual Web server. This may or may not work depending on the client having a firewall enabled.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With