社区
进程/线程/DLL
帖子详情
请教关于使用函数CreateProcessAsUser的问题
coolcorner
2008-01-11 02:03:02
最近通过使用logonuser及CreateProcessAsUser函数在服务中启动某应用程序。当此应用程序是MFC程序时,不能启动,报“VC++ RunTime Error...”错误,如果程序是非MFC程序就可启动,有没有哪位老大知道是怎么回事,谢谢!
...全文
2628
15
打赏
收藏
请教关于使用函数CreateProcessAsUser的问题
最近通过使用logonuser及CreateProcessAsUser函数在服务中启动某应用程序。当此应用程序是MFC程序时,不能启动,报“VC++ RunTime Error...”错误,如果程序是非MFC程序就可启动,有没有哪位老大知道是怎么回事,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
九州剑王
2012-11-02
打赏
举报
回复
MFC用静态库编译试试啊
bingkehanfeng
2012-10-11
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
权限什么的由token决定,保存在内核空间,环境变量保存在用户空间的另一个地方,两者不相干
createprocessasuser的Environment参数如果是0就继承父进程的环境变量
[/Quote]但是我定义一个castring的变量 envp;然后createprocessAsUser的enveroment的值为envp,结果发现我的进程发生错误是1067,进程意外终止。
Lactoferrin
2011-05-11
打赏
举报
回复
[Quote=引用 10 楼 leeter 的回复:]
引用 6 楼 leeter 的回复:
我来抛块砖,是我之前做这个的经验:
CreateProcessAsUser这个函数的第一个参数是一个用户令牌(Token),然后这个令牌会携带很多信息。
你说的报错那个问题,估计是因为Token中没有相关的GUI信息,貌似用LogonUser登录后需要做很多事情才能创建界面进程。
我当时的情况是:那个地方没有使用LogonUser,而是由Syst……
[/Quote]
你们不是同一个号吗?
quwei197874
2011-05-11
打赏
举报
回复
不懂帮顶
青稞
2011-05-11
打赏
举报
回复
什么情况??
幻觉??
leeter
2011-05-11
打赏
举报
回复
[Quote=引用 6 楼 leeter 的回复:]
我来抛块砖,是我之前做这个的经验:
CreateProcessAsUser这个函数的第一个参数是一个用户令牌(Token),然后这个令牌会携带很多信息。
你说的报错那个问题,估计是因为Token中没有相关的GUI信息,貌似用LogonUser登录后需要做很多事情才能创建界面进程。
我当时的情况是:那个地方没有使用LogonUser,而是由System账户调用CreateProcessAs……
[/Quote]
等等等等,首先,你说的正确;
但是,为啥你的名字和我的一样啊??难道我不叫leeter?
Lactoferrin
2011-05-10
打赏
举报
回复
权限什么的由token决定,保存在内核空间,环境变量保存在用户空间的另一个地方,两者不相干
createprocessasuser的Environment参数如果是0就继承父进程的环境变量
minggo1981
2011-05-10
打赏
举报
回复
我有碰到过用createprocessasuser创建的进程,虽然任务管理器看到的进程是USER的权限,但查找环境变量什么的都还是SYSTEM权限,为什么?
wangweixing2000
2008-01-15
打赏
举报
回复
先用hxfjb的方法看看是否是缺少库
看看下面代码,以便我都这么用,没发现过有啥问题,good lucky!
if (OpenProcessToken(GetCurrentProcess(),MAXIMUM_ALLOWED, &hToken))
{
if (DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL,
SecurityImpersonation, TokenPrimary, &hNewToken))
{
bRet = CreateProcessAsUser(hNewToken, NULL,
szProcessName, NULL, NULL, FALSE,
0, NULL, NULL, &StartupInfo, &ProcInfo);
CloseHandle(hNewToken);
}
CloseHandle(hToken);
}
}
leeter
2008-01-15
打赏
举报
回复
我来抛块砖,是我之前做这个的经验:
CreateProcessAsUser这个函数的第一个参数是一个用户令牌(Token),然后这个令牌会携带很多信息。
你说的报错那个问题,估计是因为Token中没有相关的GUI信息,貌似用LogonUser登录后需要做很多事情才能创建界面进程。
我当时的情况是:那个地方没有使用LogonUser,而是由System账户调用CreateProcessAsUser启动线程,然后是查找系统中的explorer.exe进程,然后获取该进程的Token,然后用该Token调用CreateProcessAsUser创建新进程。
还有就是环境变量的问题,可以参照如下:
if(!CreateEnvironmentBlock(&lpEnvBlock, hUserToken, FALSE))
return GetLastError();
if(!CreateProcessAsUser(hUserToken, strExePath, NULL, NULL, NULL, FALSE, CREATE_UNICODE_ENVIRONMENT, lpEnvBlock, strDirectory, &si, &pi))
return GetLastError();
if(!DestroyEnvironmentBlock(lpEnvBlock))
return GetLastError();
仅供参考!
飞天舞
2008-01-14
打赏
举报
回复
???
junheng
2008-01-14
打赏
举报
回复
你这是不是在调试期间报的错?
你直接执行编译出来的程序试试,这种情况我以前也遇到过。
hxfjb
2008-01-14
打赏
举报
回复
你可以独立运行你的那个MFC程序,看看是不是缺少MFC的动态库。对CreateProcessAsUser而言,是不是MFC的程序没有什么区别。
DentistryDoctor
2008-01-13
打赏
举报
回复
VC++ RunTime Error?
详细的错误信息呢?
shelliu
2008-01-11
打赏
举报
回复
不知道,但很感兴趣,帮顶并关注中。。。。。。。。
水晶报表
使用
经验总结
资料: Asp.Net中
使用
水晶报表(上) www.dotnet8.com 2002-9-6 DotNet吧 这篇文章教你如何在.Net Web应用中
使用
水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础 的Asp.Net访问数据库的知识以及
使用
VS.Net的开发经验。 简介 水晶报表可以由很多的方法得到,其中一个就是
使用
VS.N...
Hook exe 和 file
c#拦截程序的运行 EasyHook + win7 64位 LocalHook.GetProcAddress("K
er
nel32.dll", "
CreateProcess
") 报异常找不到method LocalHook.GetProcAddress("K
er
nel32.dll", "
CreateProcess
W") 可以hook到部分程序的启动 Creat...
CSDN社区关于水晶报表的讨论
CSDN - 专家门诊 关闭窗口 主 题: 有关水晶报表的
使用
经验和资料总结,欢迎各位
使用
过水晶报表的同仁把自己在
使用
过程中的总结、经验、体会同大家共享!! 作 者: foxtoo (阿里巴巴和四十大盗) 信 誉 值: 100 所属论坛: .NET技术 ASP.NET
问题
点数: 0 回复次数: 64 发表时间: 2003-6-10 23:04
系统:Shell和GDI Thread和杂项等
Q如何判断是文件,还是目录?急!! T请各位高手指教,在c 语言中,用程序怎样判断要操作的是一个目录还是一个文件?在c语言中要调用api
函数
时许包含什么头文件?具体要用到什么
函数
请多多帮忙!!谢谢!!APathIsDirectory#include Q用程序怎么打印一个Word或者RTF文档啊? T比如有C:/a.rtf我怎么可以把它送到打印机打出来呢?AShellExecute C:/a.rtf
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章