Better method to detect process elevation. This hopefully prevents that the process from being detected as "elevated" on Vista+ systems that have UAC disabled.
This commit is contained in:
parent
3b598fbdf9
commit
fe7a8064c7
@ -386,20 +386,23 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<widget class="QFrame" name="frame_2">
|
||||||
<property name="orientation">
|
<property name="maximumSize">
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
<size>
|
||||||
<width>20</width>
|
<width>16777215</width>
|
||||||
<height>3</height>
|
<height>2</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::HLine</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
@ -1160,7 +1163,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../res/Icons.qrc">
|
<iconset resource="../res/Icons.qrc">
|
||||||
<normaloff>:/icons/door_out.png</normaloff>:/icons/door_out.png</iconset>
|
<normaloff>:/icons/door_in.png</normaloff>:/icons/door_in.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -1466,7 +1469,7 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../res/Flags.qrc">
|
<iconset>
|
||||||
<normaloff>:/flags/gb.png</normaloff>:/flags/gb.png</iconset>
|
<normaloff>:/flags/gb.png</normaloff>:/flags/gb.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -1482,6 +1485,10 @@
|
|||||||
<include location="../res/Images.qrc"/>
|
<include location="../res/Images.qrc"/>
|
||||||
<include location="../res/Icons.qrc"/>
|
<include location="../res/Icons.qrc"/>
|
||||||
<include location="../res/Images.qrc"/>
|
<include location="../res/Images.qrc"/>
|
||||||
|
<include location="../res/Icons.qrc"/>
|
||||||
|
<include location="../res/Images.qrc"/>
|
||||||
|
<include location="../res/Icons.qrc"/>
|
||||||
|
<include location="../res/Images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
<file>icons/delete.png</file>
|
<file>icons/delete.png</file>
|
||||||
<file>icons/disk.png</file>
|
<file>icons/disk.png</file>
|
||||||
<file>icons/door_out.png</file>
|
<file>icons/door_out.png</file>
|
||||||
|
<file>icons/door_in.png</file>
|
||||||
<file>icons/drive_cd.png</file>
|
<file>icons/drive_cd.png</file>
|
||||||
<file>icons/exclamation.png</file>
|
<file>icons/exclamation.png</file>
|
||||||
<file>icons/error.png</file>
|
<file>icons/error.png</file>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#define VER_LAMEXP_MAJOR 4
|
#define VER_LAMEXP_MAJOR 4
|
||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 0
|
#define VER_LAMEXP_MINOR_LO 0
|
||||||
#define VER_LAMEXP_BUILD 213
|
#define VER_LAMEXP_BUILD 215
|
||||||
#define VER_LAMEXP_SUFFIX TechPreview
|
#define VER_LAMEXP_SUFFIX TechPreview
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -247,7 +247,7 @@ void AboutDialog::showMoreAbout(void)
|
|||||||
moreAboutText += LINK("http://www.ac3filter.net/projects/tools");
|
moreAboutText += LINK("http://www.ac3filter.net/projects/tools");
|
||||||
moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
|
moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
|
||||||
|
|
||||||
moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("MediaInfo - Media File Analysis Tool")), "mediainfo_i386.exe", "v?.?.?");
|
moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("MediaInfo - Media File Analysis Tool")), "mediainfo_i386.exe", "v?.?.??");
|
||||||
moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
|
moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
|
||||||
moreAboutText += LINK("http://mediainfo.sourceforge.net/");
|
moreAboutText += LINK("http://mediainfo.sourceforge.net/");
|
||||||
moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
|
moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
|
||||||
|
@ -74,14 +74,14 @@
|
|||||||
#define TEMP_HIDE_DROPBOX(CMD) { bool __dropBoxVisible = m_dropBox->isVisible(); if(__dropBoxVisible) m_dropBox->hide(); CMD; if(__dropBoxVisible) m_dropBox->show(); }
|
#define TEMP_HIDE_DROPBOX(CMD) { bool __dropBoxVisible = m_dropBox->isVisible(); if(__dropBoxVisible) m_dropBox->hide(); CMD; if(__dropBoxVisible) m_dropBox->show(); }
|
||||||
|
|
||||||
//Helper class
|
//Helper class
|
||||||
class Index: public QObjectUserData
|
//class Index: public QObjectUserData
|
||||||
{
|
//{
|
||||||
public:
|
//public:
|
||||||
Index(int index) { m_index = index; }
|
// Index(int index) { m_index = index; }
|
||||||
int value(void) { return m_index; }
|
// int value(void) { return m_index; }
|
||||||
private:
|
//private:
|
||||||
int m_index;
|
// int m_index;
|
||||||
};
|
//};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Constructor
|
// Constructor
|
||||||
@ -222,11 +222,11 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
|||||||
m_tabActionGroup->addAction(actionCompression);
|
m_tabActionGroup->addAction(actionCompression);
|
||||||
m_tabActionGroup->addAction(actionMetaData);
|
m_tabActionGroup->addAction(actionMetaData);
|
||||||
m_tabActionGroup->addAction(actionAdvancedOptions);
|
m_tabActionGroup->addAction(actionAdvancedOptions);
|
||||||
actionSourceFiles->setUserData(0, new Index(0));
|
actionSourceFiles->setData(0);
|
||||||
actionOutputDirectory->setUserData(0, new Index(1));
|
actionOutputDirectory->setData(1);
|
||||||
actionMetaData->setUserData(0, new Index(2));
|
actionMetaData->setData(2);
|
||||||
actionCompression->setUserData(0, new Index(3));
|
actionCompression->setData(3);
|
||||||
actionAdvancedOptions->setUserData(0, new Index(4));
|
actionAdvancedOptions->setData(4);
|
||||||
actionSourceFiles->setChecked(true);
|
actionSourceFiles->setChecked(true);
|
||||||
connect(m_tabActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(tabActionActivated(QAction*)));
|
connect(m_tabActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(tabActionActivated(QAction*)));
|
||||||
|
|
||||||
@ -237,11 +237,11 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
|
|||||||
m_styleActionGroup->addAction(actionStyleWindowsVista);
|
m_styleActionGroup->addAction(actionStyleWindowsVista);
|
||||||
m_styleActionGroup->addAction(actionStyleWindowsXP);
|
m_styleActionGroup->addAction(actionStyleWindowsXP);
|
||||||
m_styleActionGroup->addAction(actionStyleWindowsClassic);
|
m_styleActionGroup->addAction(actionStyleWindowsClassic);
|
||||||
actionStylePlastique->setUserData(0, new Index(0));
|
actionStylePlastique->setData(0);
|
||||||
actionStyleCleanlooks->setUserData(0, new Index(1));
|
actionStyleCleanlooks->setData(1);
|
||||||
actionStyleWindowsVista->setUserData(0, new Index(2));
|
actionStyleWindowsVista->setData(2);
|
||||||
actionStyleWindowsXP->setUserData(0, new Index(3));
|
actionStyleWindowsXP->setData(3);
|
||||||
actionStyleWindowsClassic->setUserData(0, new Index(4));
|
actionStyleWindowsClassic->setData(4);
|
||||||
actionStylePlastique->setChecked(true);
|
actionStylePlastique->setChecked(true);
|
||||||
actionStyleWindowsXP->setEnabled((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_XP && lamexp_themes_enabled());
|
actionStyleWindowsXP->setEnabled((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_XP && lamexp_themes_enabled());
|
||||||
actionStyleWindowsVista->setEnabled((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_VISTA && lamexp_themes_enabled());
|
actionStyleWindowsVista->setEnabled((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_VISTA && lamexp_themes_enabled());
|
||||||
@ -728,7 +728,7 @@ void MainWindow::encodeButtonClicked(void)
|
|||||||
|
|
||||||
if(m_fileListModel->rowCount() < 1)
|
if(m_fileListModel->rowCount() < 1)
|
||||||
{
|
{
|
||||||
QMessageBox::warning(this, tr("LameXP"), tr("You must add at least one file to the list before proceeding!"));
|
QMessageBox::warning(this, tr("LameXP"), QString("<nobr>%1</nobr>").arg(tr("You must add at least one file to the list before proceeding!")));
|
||||||
tabWidget->setCurrentIndex(0);
|
tabWidget->setCurrentIndex(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -958,7 +958,9 @@ void MainWindow::tabPageChanged(int idx)
|
|||||||
QList<QAction*> actions = m_tabActionGroup->actions();
|
QList<QAction*> actions = m_tabActionGroup->actions();
|
||||||
for(int i = 0; i < actions.count(); i++)
|
for(int i = 0; i < actions.count(); i++)
|
||||||
{
|
{
|
||||||
if(actions.at(i)->userData(0) && dynamic_cast<Index*>(actions.at(i)->userData(0))->value() == idx)
|
bool ok = false;
|
||||||
|
int actionIndex = actions.at(i)->data().toInt(&ok);
|
||||||
|
if(ok && actionIndex == idx)
|
||||||
{
|
{
|
||||||
actions.at(i)->setChecked(true);
|
actions.at(i)->setChecked(true);
|
||||||
}
|
}
|
||||||
@ -970,10 +972,14 @@ void MainWindow::tabPageChanged(int idx)
|
|||||||
*/
|
*/
|
||||||
void MainWindow::tabActionActivated(QAction *action)
|
void MainWindow::tabActionActivated(QAction *action)
|
||||||
{
|
{
|
||||||
if(action && action->userData(0))
|
if(action && action->data().isValid())
|
||||||
{
|
{
|
||||||
int index = dynamic_cast<Index*>(action->userData(0))->value();
|
bool ok = false;
|
||||||
tabWidget->setCurrentIndex(index);
|
int index = action->data().toInt(&ok);
|
||||||
|
if(ok)
|
||||||
|
{
|
||||||
|
tabWidget->setCurrentIndex(index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -982,9 +988,11 @@ void MainWindow::tabActionActivated(QAction *action)
|
|||||||
*/
|
*/
|
||||||
void MainWindow::styleActionActivated(QAction *action)
|
void MainWindow::styleActionActivated(QAction *action)
|
||||||
{
|
{
|
||||||
if(action && action->userData(0))
|
if(action && action->data().isValid())
|
||||||
{
|
{
|
||||||
m_settings->interfaceStyle(dynamic_cast<Index*>(action->userData(0))->value());
|
bool ok = false;
|
||||||
|
int actionIndex = action->data().toInt(&ok);
|
||||||
|
m_settings->interfaceStyle(actionIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(m_settings->interfaceStyle())
|
switch(m_settings->interfaceStyle())
|
||||||
|
@ -422,22 +422,33 @@ static bool lamexp_check_compatibility_mode(const char *exportName)
|
|||||||
*/
|
*/
|
||||||
static bool lamexp_check_elevation(void)
|
static bool lamexp_check_elevation(void)
|
||||||
{
|
{
|
||||||
typedef enum { lamexp_token_elevation_class = 20 };
|
typedef enum { lamexp_token_elevationType_class = 18, lamexp_token_elevation_class = 20 } LAMEXP_TOKEN_INFORMATION_CLASS;
|
||||||
typedef struct { DWORD TokenIsElevated; } LAMEXP_TOKEN_ELEVATION;
|
typedef enum { lamexp_elevationType_default = 1, lamexp_elevationType_full, lamexp_elevationType_limited } LAMEXP_TOKEN_ELEVATION_TYPE;
|
||||||
|
|
||||||
HANDLE hToken = NULL;
|
HANDLE hToken = NULL;
|
||||||
bool bIsProcessElevated = false;
|
bool bIsProcessElevated = false;
|
||||||
|
|
||||||
if(OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
|
if(OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
|
||||||
{
|
{
|
||||||
LAMEXP_TOKEN_ELEVATION tokenElevation;
|
LAMEXP_TOKEN_ELEVATION_TYPE tokenElevationType;
|
||||||
DWORD returnLength;
|
DWORD returnLength;
|
||||||
if(GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS) lamexp_token_elevation_class, &tokenElevation, sizeof(LAMEXP_TOKEN_ELEVATION), &returnLength))
|
if(GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS) lamexp_token_elevationType_class, &tokenElevationType, sizeof(LAMEXP_TOKEN_ELEVATION_TYPE), &returnLength))
|
||||||
{
|
{
|
||||||
if(returnLength == sizeof(LAMEXP_TOKEN_ELEVATION) && tokenElevation.TokenIsElevated != 0)
|
if(returnLength == sizeof(LAMEXP_TOKEN_ELEVATION_TYPE))
|
||||||
{
|
{
|
||||||
qWarning("Process token is elevated -> potential security risk!\n");
|
switch(tokenElevationType)
|
||||||
bIsProcessElevated = true;
|
{
|
||||||
|
case lamexp_elevationType_default:
|
||||||
|
qDebug("Process token elevation type: Default -> UAC is disabled.\n");
|
||||||
|
break;
|
||||||
|
case lamexp_elevationType_full:
|
||||||
|
qWarning("Process token elevation type: Full -> potential security risk!\n");
|
||||||
|
bIsProcessElevated = true;
|
||||||
|
break;
|
||||||
|
case lamexp_elevationType_limited:
|
||||||
|
qDebug("Process token elevation type: Limited -> not elevated.\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CloseHandle(hToken);
|
CloseHandle(hToken);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user