v1.5

  StartRemote


About



StartRemote is a small program-suite, that lets You control a remote-PC by starting programs or command-batches remotely in Your LAN or over the internet.
It has a handy user-interface, which lets You define an unlimited number of buttons - in a size of Your choice - that triggers a remote-action and even local actions.
If You have a IP v6 internet-connection or are unable to configure port-forwarding in Your router, StartRemote brings a helper-tool that uses a free ngrok-account for sending all Your commands thru a private tunnel, that needs no further configuration!
Read the documentaion carefully for installation and use.


Features

  • "StartHelper" runs on the remote machine, "Start Remote" runs on the local machine
  • Define a unlimited number of buttons with a size, text and graphic of Your choice
  • Buttons arrange automatically in the main-window
  • Define a local or/and a remote action for each button
  • Commands of any kind are sent to the remote machine and executed there
  • No need fop IPv4 or configuring a port-forwarding when "ngrokHelper" is used
  • "Start Remote" Stores automatically your settings on exit
  • When using "ngrokHelper", ngrok`s changing public IP/port will be detecetd and saved on an webserver.
  • "Start Remote" reads automatically these ngrok-settings

Video tutorials

Basic tutorial

Installation and use

Requirements
  • Windows 7 or higher
  • .net framework v4.6.1 or higher
  • Permanent internet-connection and known address of server (if run over the internet and not in a local network)
For using ngrokHelper:
- a free ngrok-account
- a internet-reachable webserver with PHP

StartHelper.exe, the "server-application" needs to run on the remote-pc
StartRemote.exe, the "client-applicatin", with it You control Your server, runs on the local PC
ngrokHelper.exe - only needed if You use the solution over internet and DO NOT or CAN´T change portforwarding on Your router. Needs ngrok with an registered account (free).

Extract the .exe files in an own directory WITH WRITE-PERMISSIONS (If you choose c:\program files (x86), set the permissions for write and change to USERS oder EVERYONE), or copy it into a directory within Your documents.

Simplest setup, testing all on Your local machine:
  • run the server "StartHelper.exe"
  • confirm it´s communication thru the firewall
  • enter a listening port, i.e. 20888
  • run the client "StartRemote.exe"
  • check in it´s options that the address is set to 127.0.0.1 and port is set to 20888 or the same, You entered in StartHelper.
  • right-click on a button and choose "Edit"
  • enter a text for the button
  • enter "notepad" into the "Execute"-field in the remote-tab.
  • click "Save"
  • click "Connect"
  • StartHelper should confirm the connection
  • StartRemote should show "Connected." in the status-bar.
  • Click on the button, You gave a text to
  • StartHelper should show some information
  • notepad should start om Your PC.
This is a local test. Notepad was started from StartHelper. When this app runs on a remote machine, the started program would start on the remote machine.

You can define any program or batch to start. When StartHelper was started with admin-permissions, everythings is possible via batch or cmd-commands.
You can run cmd commands by defining cmd as Executable and as an example
/c cd c: & dir > %temp%\dir.txt
as arguments.
When executet, cmd changes to the root-directory of C:\ and writes a DIR-listing into the file "dir.txt" in the users`s TEMP-dir.

StartHelper options:
run StartHelper /HELP to see it´s help.
run StartHelper /Port 12345 once to change the listening port.
run StartHelper /SETAUTOSTART to activate the autostart of StartHelper via registry (not needed when used with ngrokHelper!).
run StartHelper /DELAUTOSTART to remove autostart of StartHelper.


Internet setup with port-forwarding

The same scenario can be run over the internet by using a port-forwarding on Your internet-router:
You must have a IP v4 internet-connection and must be able to set a port-forwarding in Your router.
Your server-IP must be fixed, at least known or published by an dynamic DNS provider (pcip.de, myFritz.net)

If so, set a port-forwarding in Your router on the port You set in StartHelper and point it to Your remote-PC.
Connect with StartRemote with the known IP or DynDNS-address and the port You set.

Internet setup without port-forwarding or IP v6 (with ngrok)

If You can´t change port-forwarding or have an IP v6 connection, the setup can be done with the help of ngrok.
  • You must have an internet-webspace with PHP
  • create a directory in Your webspace
  • give write-permissions to this directory for everyone (i.e. CHMOD 777) or for the appache-user.
  • copy ngrokurl.php into this directory
  • go to ngrok.com and download ngrok
  • register a free account at ngrok.com
  • You should receive an ´authtoken´ by mail or read in your account-settings at ngrok.com
  • copy ngrok.exe into a directory of Your choice
  • run ngrok authtoken once
  • ngrok is ready to use.
If You now would run ngrok tcp 20888 -region eu (region for europe, check ngrok-doku for other regions), it will open a tunnel which makes a port-forwarding obsolete.
ngrok´s window shows the public URL which You can type in StartRemote to use it.

BUT: When You close ngrok and start it again, it will have a different URL/port, which You will need to know everytime You use StartHelper/StartRemote (You could check it with teamviewer, but no need, when You have a webspace and use ngrokHelper! So continue reading.).

Using ngrokHelper:

  • put ngrokHelper into a directory WITH WRITE-PERMISSIONS (maybe the StartHelper-directory, but take care of the write-permission!)
  • start ngrokHelper.exe once
  • press any key, ngrokHelper ends
  • If You had write-permissions on this directory, a new file "ngrokHelper.ini" was created
  • open ngrokHelper.ini
  • edit "ScriptURL" to Your domain/path where You did save ngrokurl.php (must start with http: or https://)
  • edit "Path" to the directory, where ngrok.exe is (just the path without trailing "ngrok.exe")
  • edit "Port" to the port You like to use with StartHelper
  • edit "PathPlusExe" to PATH_TO_STARTHELPER\StartHelper.exe
  • edit "AddonStartWorkingDir" to the PATH_TO_STARTHELPER
  • save ngrokHelper.ini
When ngrokHelper is startet, it:
  • checks, if ngrok is running or not
  • starts ngrok with the given arguments of the .ini
  • reads ngrok´s public URL
  • updates the internet-script "ngrokurl.php" with the actual ngrok public-URL
  • starts StartHelper (when StartHelper is defined as "AddonStart")
  • ends automatically after 3 seconds
You can check the success of the script-update by opening
http(s)://YOUR_DOMAIN/YOUR_PATH_TO_SCRIPT/ngrokurl.php?a=get
It will give something like
28.11.2018-04:58|tcp://0.tcp.eu.ngrok.io:14581
This is the date/time of the update and the actual ngrok-public-url

You now could put "0.tcp.eu.ngrok.io" as address and "14581" as Port into StartRemote and it will work.

BUT:
StartRemote can check the actual ngrok-URL automatically for You:
  • open the options-dialogue of StartRemote
  • fill out the "Script-URL"-field (with beginning "http: ...") with the domain/path/ngrokurl.php
  • click on "Get from web"
  • a line appears under the button "Get from web" with the date/time information when the script was updated.
  • StartRemote will retrieve the data from the script and You are ready to go.
Even better:
When You check "Get from web at startup", You will no longer need to check the latest ngrok-URL manually.
And when You check "Connect at startup" too, StartRemote will try to connect the server automatically.
Isn´t that cute?

So it is recommended to setup ngrokHelper for starting with windows.
This can be done with a command:
run ngrokHelper /SETAUTOSTART to activate the autostart of ngrokHelper via registry (for the current user).
run ngrokHelper /DELAUTOSTART to remove autostart of ngrokHelper.
run ngrokHelper /HELP to see it´s help.
run ngrokHelper <"PATH_TO_AN_INI\ngrokHelper.ini"> starts ngrokHelper with a special .ini-File.

Optional ngrokHelper.ini-parameters
  • Edit NgrokWindowState and/or AddonWindowState to a window-state of ngrok and/or StartHelper with the syntax:
    0 means "normal window" (default)
    1 means "minimized widow" (shows in taskbar)
    2 means "maximized widow" (shows in taskbar)
    3 means "hidden" (doesn"t show in taskbar)
  • "StartOnlyIfNgrokNotRunning" 0 or 1 means: StartHelper (or any other program under "AddonStart") will not be startet when ngrok is not running, Yes/No
  • "KillNgrokIfRunning" 0 or 1 means: If ngrok is already running, it will be terminated and started again, Yes/No
  • "StartOnlyWhenUpdateSuccessfull" 0 or 1 means: StartHelper (or any other program under "AddonStart") will only be started, when the script-update was successfull.

Future features

StartHelper is already able to receive commands from a web-script.
So I am working on a web-interface, that works identically to StartRemote.
It will be able to import/export the starthelper.ini - file which will be compatible to the windows-app.
So You would need only once define Your button-set and the commands and the solution will run platform-independet on any device (Mac/Linux/mobile phones/tablets).

Contact

Just write a comment, report a bug, get help or suggest a feature.


(* required fields)