首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CreateProcessAsUser与ShellExecute

ProcessAsUser与ShellExecute是Windows操作系统中两种不同的方法,用于创建新的进程。

CreateProcessAsUser是一种更底层的方法,它允许您创建一个新的进程,并以指定的用户身份运行。这种方法比ShellExecute更安全,因为它不会使用任何shell扩展,而是直接启动进程。此外,它还可以更好地控制新进程的安全性和环境。

ShellExecute是一种更高级的方法,它允许您使用shell扩展来创建新进程。这种方法通常用于打开文件或执行可执行文件。ShellExecute方法比CreateProcessAsUser更简单,但也更不安全,因为它可能会受到shell扩展的影响。

总的来说,CreateProcessAsUser和ShellExecute都是用于创建新进程的方法,但它们的实现方式和安全性不同。如果您需要更安全的方法来创建新进程,则应使用CreateProcessAsUser。如果您需要更简单的方法来创建新进程,则可以使用ShellExecute。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows黑客编程技术详解 --第四章 木马启动技术(内含赠书福利)

直接调用ShellExecute函数创建进程,具体的实现代码如下所示。...虽然Windows 7及以上版本的SESSION 0给服务层和应用层间的通信造成了很大的难度,但这并不代表没有办法实现服务层应用层间的通信交互。...请注意,继承的句柄具有原始句柄相同的值和访问权限。 dwCreationFlags [in] 控制优先级和进程创建的标志。...这样,创建的进程才会显示UI界面,用户进行交互。 在SESSION 0中创建用户桌面进程具体的实现流程如下所示。...获取环境块后,就可以调用CreateProcessAsUser来创建用户桌面进程。CreateProcessAsUser函数的用法以及参数含义CreateProcess函数的用法和参数含义类似。

3.6K50

实战 | 进程启动技术的思路和研究

常规api创建进程 通过常用的api来创建进程是常规启动进程的方式,最常用的几个api有WinExec、ShellExecute、CreateProcess,我们一个一个来看一下 WinExec 首先是...ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制 HINSTANCE ShellExecuteA( [in,...(char* szPath, UINT Cmd){ HINSTANCE hIns = 0; hIns = ::ShellExecute(NULL,NULL,szPath,NULL,NULL,...RING设计的初衷是将系统权限程序分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。...获取环境块之后,就可以调用CreateProcessAsUser来创建用户桌面进程了。

98250

ShellExecute使用详解

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂,比较少用。...如:WinExec(‘Notepad.exe Readme.txt’, SW_SHOW); 3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。...首先必须引用shellapi.pas单元:uses ShellAPI; 1).标准用法   ShellExecute函数原型及参数含义如下:   function ShellExecute(hWnd...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。   上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL SW_RESTORE

73510

ShellExecute, WinExec, CreateProcess区别

ShellExecute   ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。   ...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。   上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...新进程树的用户标识符这个进程的标识符是相同的,由 lpProcessInformation参数返回。...如果这个参数为空,新进程将使用调用进程相同的驱动器和目录。这个选项是一个需要启动启动应用程序并指定它们的驱动器和工作目录的外壳程序的主要条件。   ...举例来说,在试图新进程关联的窗口之前,进程应该先调用 WaitForInputIdle。

83420

WinExec、ShellExecute用法详解「建议收藏」

2、ShellExecute() :   不仅可以运行EXE文件,也可以运行系统已经关联的文件。...ShellExecute的功能要强得多,并且可以完全替代WinExec(),事实上,WinExec()也是为了和以前版本兼容而保留,所以,我们要尽量使用ShellExecute()。   ...首先必须引用shellapi.pas单元:uses ShellAPI; 函数原型: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters...第一次运行程序 时应该使用这个值   若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。...刚才的例子: WinExec(pChar('notepad.exe C:\HDC.TXT'),SW_SHOWNORMAL); 就可以改变为(假设窗口的句柄为Handle) ShellExecute(

1.3K30

ShellExecute 启动外部程序 参数详细介绍

ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。...2原型参数编辑 注意事项:使用该函数时,需添加该头文件:[1]#include ShellExecute函数原型及参数含义如下: ShellExecute( hWnd: HWND...若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。...格式一:mailto 如:ShellExecute(Handle,"open", "mailto:", NULL, NULL, SW_SHOWNORMAL);打开新邮件窗口。...同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL SW_RESTORE

3.4K110

C#.NET基于Topshelf创建Windows服务的守护程序不显示UI界面的问题分析和解决方案

从Vista 开始Session 0 中只包含系统服务,其他应用程序则通过分离的Session 运行,将服务应用程序隔离提高系统的安全性。如下图所示: ?...潜在的问题 解决方案 在了解了Session 0 隔离之后,给出一些有关创建服务程序以及由服务托管的驱动程序的建议: 1、应用程序通信时,使用RPC、命名管道等C/S模式代替窗口消息 2、如果服务程序需要...UI用户交互的话,有两种方式: ①用WTSSendMessage来创建一个消息框用户交互 ②使用一个代理(agent)来完成跟用户的交互,服务程序通过CreateProcessAsUser创建代理...在XP的FUS下能工作的服务程序将很可能可以在新版系统中工作,注意XP的FUS下的测试不能检测到在Session 0下跟视频驱动有关的问题 本文我们的服务程序将通过CreateProcessAsUser...CreateProcessAsUser(hUserToken, appPath, // Application Name

1.1K20

7.2 通过API创建新进程

其中,常用的三种创建进程的方式分别是WinExec()、ShellExecute()和CreateProcessA(),这三种创建进程的方式各有特点。...如果需要创建简单进程或从其他程序启动新进程,可以使用WinExec()或ShellExecute()函数。...但是该函数也存在一些问题,例如ANSI编码、不支持进程标识符等,建议在实际开发中使用更为灵活的CreateProcess()或ShellExecute()函数。...ShellExecute()函数的优点是可以控制进程的启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程的方式,比如最大化或最小化窗口,或者在后台启动进程。...NORMAL_PRIORITY_CLASS,表示新进程在普通优先级类中运行lpEnvironment:进程环境空间块的指针,用于设置新进程的环境变量lpCurrentDirectory:指定新进程的初始工作目录,如果为NULL,则使用调用进程相同的当前目录

17940

windows文件在另一程序打开_windows程序设计第7版

打开文件或执行程序 ShellExecute是一种很好用的方法,也是最常用的。...同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL SW_RESTORE...SE_ERR_DDETIMEOUT 请求超时,无法完成DDE事务请求 SE_ERR_DLLNOTFOUND 未找到指定dll SE_ERR_FNF 未找到指定文件 SE_ERR_NOASSOC 未找到给的文件拓展名关联的应用程序...如: ShellExecute(handle,L"open",L" http://www.neu.edu.cn", NULL, NULL, SW_SHOWNORMAL); ShellExecute()函数在...打开一个程序 ShellExecute(NULL,L"open",L"notepad.exe", L"c:\\MyLog.log", NULL, SW_SHOW ); 用系统打印机打印文档 ShellExecute

64910
领券