Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmupdate
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李定达
fmupdate
Commits
e02b03c4
Commit
e02b03c4
authored
Jan 19, 2018
by
李定达
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.添加启动失败,运行脚本启动的功能
parent
b588250f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
5 deletions
+14
-5
fmscupd/fmcontrol.cpp
+14
-5
No files found.
fmscupd/fmcontrol.cpp
View file @
e02b03c4
...
@@ -141,7 +141,8 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
...
@@ -141,7 +141,8 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
if
(
pfnWTSQueryUserToken
==
NULL
)
if
(
pfnWTSQueryUserToken
==
NULL
)
{
{
error
=
QString
(
"get WTSQueryUserToken failed"
);
error
=
QString
(
"get WTSQueryUserToken failed"
);
return
QProcess
::
startDetached
(
exePath
,
QStringList
(
exePath
));
QLOG_ERROR
()
<<
error
;
return
QProcess
::
startDetached
(
QString
(
qApp
->
applicationDirPath
()
+
"/upstart.bat"
),
QStringList
(
exePath
));
}
}
// 进程信息
// 进程信息
STARTUPINFO
si
;
STARTUPINFO
si
;
...
@@ -156,7 +157,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
...
@@ -156,7 +157,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
if
(
pfnWTSQueryUserToken
(
dwSessionID
,
&
hToken
)
==
FALSE
)
if
(
pfnWTSQueryUserToken
(
dwSessionID
,
&
hToken
)
==
FALSE
)
{
{
error
=
QString
(
"get session failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
error
=
QString
(
"get session failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
return
false
;
QLOG_ERROR
()
<<
error
;
return
QProcess
::
startDetached
(
QString
(
qApp
->
applicationDirPath
()
+
"/upstart.bat"
),
QStringList
(
exePath
));
//return false;
}
}
// 复制令牌
// 复制令牌
HANDLE
hDuplicatedToken
=
NULL
;
HANDLE
hDuplicatedToken
=
NULL
;
...
@@ -170,7 +173,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
...
@@ -170,7 +173,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
CloseHandle
(
hToken
);
CloseHandle
(
hToken
);
}
}
error
=
QString
(
"copy token failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
error
=
QString
(
"copy token failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
return
false
;
//return false;
QLOG_ERROR
()
<<
error
;
return
QProcess
::
startDetached
(
QString
(
qApp
->
applicationDirPath
()
+
"/upstart.bat"
),
QStringList
(
exePath
));
}
}
// 创建用户Session环境
// 创建用户Session环境
LPVOID
lpEnvironment
=
NULL
;
LPVOID
lpEnvironment
=
NULL
;
...
@@ -181,7 +186,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
...
@@ -181,7 +186,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
CloseHandle
(
hDuplicatedToken
);
CloseHandle
(
hDuplicatedToken
);
}
}
error
=
QString
(
"create environment failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
error
=
QString
(
"create environment failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
return
false
;
//return false;
QLOG_ERROR
()
<<
error
;
return
QProcess
::
startDetached
(
QString
(
qApp
->
applicationDirPath
()
+
"/upstart.bat"
),
QStringList
(
exePath
));
}
}
// 在复制的用户Session下执行应用程序,创建进程。
// 在复制的用户Session下执行应用程序,创建进程。
if
(
CreateProcessAsUser
(
hDuplicatedToken
,
if
(
CreateProcessAsUser
(
hDuplicatedToken
,
...
@@ -194,7 +201,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
...
@@ -194,7 +201,9 @@ bool FmControl::_LaunchProcess(const QString &exePath, QString& error)
DestroyEnvironmentBlock
(
lpEnvironment
);
DestroyEnvironmentBlock
(
lpEnvironment
);
}
}
error
=
QString
(
"CreateProcessAsUser failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
error
=
QString
(
"CreateProcessAsUser failed [%1]"
).
arg
(
QString
::
number
(
::
GetLastError
()));
return
false
;
//return false;
QLOG_ERROR
()
<<
error
;
return
QProcess
::
startDetached
(
QString
(
qApp
->
applicationDirPath
()
+
"/upstart.bat"
),
QStringList
(
exePath
));
}
}
CloseHandle
(
pi
.
hProcess
);
CloseHandle
(
pi
.
hProcess
);
CloseHandle
(
pi
.
hThread
);
CloseHandle
(
pi
.
hThread
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment