내 자동 업데이터는 프로그램 폴더의 파일을 수정 한 이후로 실행하려면 관리자 권한이 필요합니다. 이 모든 것이 잘 작동합니다. 업데이트가 완료되면 QT 일반 사용자로 프로그램 시작
그러나, 나는 내updater.exe
이 관리자 권한없이
myApplication.exe
하지만
을 시작합니다. 나는 현재 updater.exe에서 myApplication.exe을 시작하기 위해 사용하는 코드 :
bool started = QDesktopServices::openUrl(QUrl::fromLocalFile(exeFileName));
if (started)
{
QApplication::quit();
}
문제는 myApplication.exe
admin으로 시작될 때, 예를 들어, 내 로컬 경로를 망쳐 놨이다 :
QString addin_path = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
관리자 사용자 폴더를 가리 킵니다. 그리고 응용 프로그램을 실행하는 실제 사용자가 아닙니다.
여기에 아이디어가 있습니까?
나는 다음과 같은 테스트하고 있습니다 Merlin069의 답변에 따라
갱신 :
TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);
qDebug() << QHostInfo::localHostName();
QProcess::startDetached("runas \"/user:<" + QHostInfo::localHostName() + ">\"" + username + ""\" \"" + exeFileName + "\");
? 또한 localmachinename을 어떻게 찾을 수 있습니까? – user3490755
Google로 쉽게 검색 할 수 있어야합니다. 예를 들어, 로그인 한 사용자를 얻으려면 : http://msdn.microsoft.com/en-us/library/421tdddx.aspx 또는 로컬 컴퓨터 이름 : http://stackoverflow.com/questions/504810/how-do -i-find-the-current-machines-full-hostname-in-c- 호스트 이름 및 도메인 정보. 또는 호스트 이름에 Qt를 사용합니다. QHostInfo :: localHostName(). – TheDarkKnight
그냥 RunAs 명령을 사용하여 사용자가 암호를 입력해야한다는 것을 알게되었습니다 – user3490755