OK, based on your requirements and design there is no solution because you need to include service accounts and passwords in the binaries to use impersonation.
When a user runs any executable in their system it automatically uses their personal account. Using any type of 'Run As' functionality for an account with greater privileges requires hiding the account name and password in code.