سؤال

I am writing a Qt application that needs to call system programs (netsh) and run them as administrator.

However, QProcess, QDesktopServices and system() don't allow me to run the application as administrator (not even with runas).

The only solution that I found is to use ShellExecute, but it does not even open the program.

My code is:

#ifdef Q_OS_WIN { ShellExecute(0, LPCWSTR("runas"), LPCWSTR("netsh wlan start hostednetwork"), 0, 0, SW_SHOWNORMAL); }

I have also tried to use other options, such as open and tried to run other programs, such as Notepad (notepad.exe) and Control Panel (control.exe), nothing worked.

I have also tried to add an manifest file and nothing was solved.

Do I miss something in my code? (examples are welcome).

هل كانت مفيدة؟

المحلول

LPCWSTR("runas") - this is incorrect, you typecast string to widestring, and probably ShellExecute will return error and does not start an application. Specify "L" prefix instead. Also, you need to split command and parameters, "netsh wlan start hostednetwork" will not work as command name. Use it like this:

ShellExecute(0, L"runas", L"netsh", L"wlan start hostednetwork", 0, SW_SHOWNORMAL);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top