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" runs on the remote-pc
StartRemote.exe, the "client-application", 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 twice a password containing letters and numbers only, at least 6 characters long
  • 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 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 to change the listening port.
run StartHelper /Password abc123 to change the password.
(StartHelper will ask at the first start for these parameters.)
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.
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.

Additional options of StartRemote

In the button-bar exist the following buttons:
Re-Arrange - arranges the user-buttons again, if they are scrambled.
Options - opens the options-dialogue for general program-settings
Command - opens a command-line, which runs a quick-command on the remote-PC, without the need to define a button.
You need to type in a program or command (incl. path) and optional working dirtectory, arguments, windows style and - if You wish ("Ask for password") - the password.
When You uncheck "Close command-window...", the command-line will stay for further commands.
Pure F11 - shows the window in Button-Only-Mode. Only theh buttons will be vsisible in a tiny window-frame. You can change this by using the right mouse button, the main-menu command "Command - pure Buttons" or with the PC-key F11. StartRemote will start the next time in the mode, it was closed.

Options-Dialogue
This Dialogue can be opened via the menu "Datei - Options" or with the button "Options" in the button-bar.
In the general-settings You can set the number of buttons, the button-width and -height, the URL or IP-Address of the server-PC ("Address"), the port of the server-PCs ("Port") and the password.
In addidtion You can set the StartRemote-window always on top.
In the "Proxy-Settings" You can define an internet-proxy with it´s URL, port, username and password, if needed. This is used for the "Web-Pics" of the buttons only.
In Script Settings You can set the URL for the ngrok-Info-Script. In addition You can choose retrieving these informations at startup of StartRemote automatically ("Get from web at startup"). With the button "Get from Web" the script can be run manually.

Button Properties - Dialogue
This dialogue is called with the right mouse-button and "Edit" of the context-menu.
In the dialogue "Edit Button" of each button the following properties will be set:
  • Visible: visibility of the button (not yet implemented)
  • Web-Image: complete path of an Internet-URLs (incl. "http") to an image-file, which will be shown on the button (optional)
  • Text: text, which will be shown on the button (optional)
  • Image: complete path of an local image-file, which will be shown on the button (optional)
  • Execute: program or command to start, incl. complete path
  • Working Directory: the working-directory to the program or command(optional)
  • Arguments: arguments for the starting program (i.e. a file to open), (optional)
  • Window State: the window-state of the starting program (0=normal, 1=minimized, 2=maximized, 3=hidden)
The last four entries exist in both tabs "Remote" and "Local".
Entries in "Remote" will be executed on the remote-PC, entries in "Local" wil be executed on the local PC.
You can use them both at a time. If You only use local-entries, StartRemote can be used as a standalone-app, that starts local applications without the need of StartHelper, which would run on a remote-PC.

With the context-menu-entries "Move Up" and "Move Down" You can change the order of the buttons.

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)