simphax / Touchmote

Touchmote
GNU General Public License v3.0
114 stars 32 forks source link

Touchmote beta 14 & 15 stopped to start in Windows 10 - 64bit #96

Open Zwillyzz opened 4 years ago

Zwillyzz commented 4 years ago

I just built a PC for my arcade cabinet. Lightgun is a must. Trying touchmote and everything was fine for a few days then it all of the sudden stopped starting automatically when restarting/booting the PC. I've tried beta 15 and 14 (because I read that 14 does not have this issue, but it's untrue).

Beta 14 and 15 are my only options. Both open freshly installed, but does not want to start after restarting (checking starting with windows, start minimized, show in task - Would only of these settings be bugged?).

Effort to fix: •Updating to all C++ I can get ahold of, 2008,2010,2013,2015,2017,2019. •Tried to use the lastest x86 version...it does not emulate an xbox controller on my windows 10 64 bit PC. •Beta 13 works but does not have "right stick, left stick" for FPS games. •Deleting settings.json and the contents in the keymaps folder was a bandaid fix. Files eventually come back and it fails to start again.

Also, what is the recommended compatibility? Wins Vista/7/8. Run as admin always? I tried this too.

Zwillyzz commented 4 years ago

WEIRD solution for touchmote not opening and/or not starting automatically after checking off start with windows: Install it on a flash drive and everything works as expected. Disappointed it came to this.

I originally had it installed in my C (windows) drive. I did A LOT of testing. For example, i found that checking off run as administrator and shutting down the PC and booting it again it totally kills it. It won't open again not even deleting settings.json or the contents in the keymaps folder. I thought it was my hard drive since it was 8% fragmented, but I optimized it and still didn't work.

Ryochan7 commented 4 years ago

Never used Beta 13 so I don't know if that version requires the uiAccess flag. Testing running the task manually shows that the request for uiAccess in the application's manifest stops the task from working. The report message says something along the lines of The requested operation requires elevation. Replacing the Touchmote.exe file with one build with uiAccess set to false allows the task to work as expected.

AFAIK, uiAccess is needed for the D3D Cursor to work properly.

Zwillyzz commented 4 years ago

Where could I check for the report message ? How do I modify uiAccess for the touchmote.exe? Or is this something the developer should do..

Thanks.

Ryochan7 commented 4 years ago

The message came up when attempting to run the task manually in Task Scheduler (Control Panel \ System and Security \ Administrative Tools \ Task Scheduler). The column is Last Run Result.

touchmote_task_scheduler

Changing the uiAccess attribute of the executable requires recompiling the program.

Zwillyzz commented 4 years ago

Great! Good to know that's the issue. @simphax will there be a hotfix anytime soon? Many people have reported this issue on here and in the comment section on touchmote.net.

I installed it on an external hard drive and it works as expected. Just won't work on my Local Drive where windows is installed. Maybe that has to do something with it?

Trihy commented 1 year ago

Couldn't find a fix for this.

I wanted to try disabling admin access to the touchmote exe, but it's not possible. Maybe if compiled with no admins rights and user select admin rights could work.

Ryochan7 commented 1 year ago

uiAccess is a part of the compiled app manifest. Changing that normally requires re-compiling the program. IIRC, Touchmote requiring admin rights and uiAccess are needed in order for the D3DCursor to appear correctly; it has been a while since I tested so I could be wrong. I do not think there are any other components in Touchmote that would absolutely require those properties to be enabled in order to work.

Trihy commented 1 year ago

Tried both ui and nonuiA and both ask for admin access or am I wrong?

I was just guessing what could happen if user gives admin access instead of the app compiled with admin access. If you go to exe properties, admin access is not checked. What if we compile the app with nonuiA and set admin access on exe properties? Probably a dumb thinking, but well Windows has its ways.

Ryochan7 commented 1 year ago

Both builds ask for admin rights (requireAdministrator). Only the uiAccess property was changed in the app.manifest between the two builds.

If you don't mind losing the D3DCursor then it would likely be possible to have Touchmote run with normal user privileges (by default) with some potential UAC quirks in some games. Using VMulti could have been used to avoid those issues and keep multi-touch functionality; FakerInput (forked from VMulti) does not provide that functionality.

Trihy commented 1 year ago

And what happens if you run as admin the normal user exe? Will have all the functionality? (d3d cursor)

I'm not sure if I use d3d cursor, not completely sure what it means, in-game d3d cursor? Or desk too? Or are just the purple ones cursor settings?

Anyway if normal user exe running as admin could have all functionality it could be a nice solution for other users.

Trihy commented 1 year ago

Do you think you can compile a build without uiAccess to see how it goes?

Also noticed move mouse down, up, left, right on settings doesnt seem to do anything. Did they ever work?