本文介绍 UseShellExecute 属性的作用,设为 true 和 false 时,分别有哪些进程启动行为上的差异。...---- 本质差异 Process.Start 本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。...UseShellExecute = true 调用的是 ShellExecute UseShellExecute = false 调用的是 CreateProcess 当然,如果你知道这两个函数的区别,...那你自然也就了解此属性设置为 true 和 false 的区别了。...如果有以下需求,那么建议设置此值为 false: 需要明确执行一个已知的程序 需要重定向输入和输出 如果你有以下需求,那么建议设置此值为 true 或者保持默认: 需要打开文档、媒体、网页文件等 需要打开
如果需要创建简单进程或从其他程序启动新进程,可以使用WinExec()或ShellExecute()函数。...使用WinExec()函数,可以传递一个字符串类型的参数,该参数中指定了要启动的进程名和参数等信息。...但是,由于WinExec()函数没有提供区分进程启动成功和失败的返回值,且无法从函数返回的进程句柄获得与进程相关的信息,因此使用较为有限。...ShellExecute()函数的优点是可以控制进程的启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程的方式,比如最大化或最小化窗口,或者在后台启动进程。...lpFile:需要执行的目标文件、应用程序或者URL地址。lpParameters:命令行参数。lpDirectory:指定被启动程序的执行路径,如果为NULL,则使用当前程序路径。
如果需要创建简单进程或从其他程序启动新进程,可以使用WinExec()或ShellExecute()函数。...使用WinExec()函数,可以传递一个字符串类型的参数,该参数中指定了要启动的进程名和参数等信息。...但是,由于WinExec()函数没有提供区分进程启动成功和失败的返回值,且无法从函数返回的进程句柄获得与进程相关的信息,因此使用较为有限。...ShellExecute()函数的优点是可以控制进程的启动方式、传递命令参数,并对返回值进行判断,通过传递参数来控制启动进程的方式,比如最大化或最小化窗口,或者在后台启动进程。...lpFile:需要执行的目标文件、应用程序或者URL地址。 lpParameters:命令行参数。 lpDirectory:指定被启动程序的执行路径,如果为NULL,则使用当前程序路径。
例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 ...第一次运行程序 时应该使用这个值 若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 ...参数设置为“mailto:”协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape Messanger...使用户点击URL链接以后,启动浏览器访问Web页面,这种对话框中的热链接使应用程序增色不少。...ShellExecute解析系统注册表HKEY_CLASSES_ROOT中所有的内容,判断启动那一个执行程序,并且启动一个新的实例或使用DDE将文件名连到一打开的实例。
本章介绍了3种常用的病毒木马启动技术,它包括: q 创建进程API:介绍使用WinExec、ShellExecute以及CreateProcess创建进程。...要运行批处理文件,必须启动命令解释程序,并将lpApplicationName设置为cmd.exe。 lpCommandLine [in, out, optional] 要执行的命令行。...如果lpThreadAttributes为NULL,则不能继承句柄。 bInheritHandles [in] 如果此参数为TRUE,则调用进程中的每个可继承句柄都将由新进程来继承。...对WinExec和ShellExecute函数设置为SW_HIDE方式可隐藏运行程序窗口,并且成功隐藏执行CMD命令行的窗口,对于其他程序窗口不能成功隐藏。...如果该值为TRUE,则该进程将继承当前进程的环境;如果此值为FALSE,则该进程不会继承当前进程的环境。 返回值 如果函数成功,则函数将返回TRUE;如果函数失败,则返回FALSE。
均已打开 记事本(notepad)为例 注意:打开其他程序时有的方法不可行,可都使用一遍进行测试 1、创建一个新线程打开应用 PROCESS_INFORMATION processInfo; char...,比如打印不可打印的文件等 SE_ERR_OOM 内存不足,无法完成操作 SE_ERR_PNF 未找到指定路径 SE_ERR_SHARE 发生共享冲突 打开网页 假设将FileName參数设置为http...若用户机器中安装了多个浏览器,则该函数将依据Windows 9x/NT注冊表中http协议处理程序(Protocols Handler)的设置确定启动哪个浏览器。...发送EMAIL 假设将FileName參数设置为mailto:协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包含Microsoft Outlook Express)...若用户机器中安装了多个邮件客户程序,则该函数将依据Windows 9x/NT注冊表中mailto协议处理程序的设置确定启动哪个邮件客户程序。mailto:用户账号@邮件server地址?
●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。 若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。...如果将FileName参数设置为“mailto:”协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape...值:CREATE_UNICODE_ENVIRONMENT 含义:如果被设置,由lpEnvironment参数指定的环境块使用Unicode字符,如果为空,环境块使用ANSI字符。 ...如果这个参数为空,新进程将使用与调用进程相同的驱动器和目录。这个选项是一个需要启动启动应用程序并指定它们的驱动器和工作目录的外壳程序的主要条件。 ...*主线程的线程对象被设置为标志状态,供其他等待这个对象的线程使用。 *进程对象被设置为标志状态,供其他等待这个对象的线程使用。
最开始的思路是获得explorer.exe的句柄,用ShellExecute启动abc.exe。但是用explorer.exe的句柄创建的进程的父进程依然是调用和进程,而不是传入句柄的进程。...); return TRUE; } 但是现在就出现问题了,ShellExecute在shell32模块里,还需要LoadLibrary和GetProcAddress。...所以改用了WinExec来代替 ShellExecute,同时要把需要的字串和函数指针都写到explorer的内存区里。...来打开进程,并得到创建线程和写的权限。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。...简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED或SW_MAXIMIZED。...有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包括进程和线程ID。...ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。...有时,不想设置任何信息,也必须传递 一个有效的指针给空结 构(确定设置大小到cb,及设置dwFlags成员为0)。
最开始的思路是获得explorer.exe的句柄,用ShellExecute启动abc.exe。但是用explorer.exe的句柄创建的进程的父进程依然是调用和进程,而不是传入句柄的进程。...); return TRUE; } 但是现在就出现问题了,ShellExecute在shell32模块里,还需要LoadLibrary和GetProcAddress。...所以改用了WinExec来代替ShellExecute,同时要把需要的字串和函数指针都写到explorer的内存区里。...来打开进程,并得到创建线程和写的权限。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。...如果我们要得到足够多的关于新的进程的信息,控制新的进 程的细节属性,若要达到这些目的,就需要使用CreateProcess函数了。 具体用法如下。...,如果为NULL则使用默认的安全属性 LPSECURITY_ATTRIBUTES lpProcessAttributes, //process security attributes LPSECURITY_ATTRIBUTES...LPSTARTUPINFO lpStartupInfo, // 用于在创建子进程时设置各种属性 LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后接受相关信息...); 使用方法如下: PROCESS_INFORMATION pi; //启动窗口的信息 STARTUPINFO si; //进程的信息 memset(&si,0,sizeof(si)); si.cb
例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 ...FileName参数设置为“mailto:”协议格式,那么该函数将启动默认邮件客户程序,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape...若用户机器中安装了多个邮件客户程序,则该函数将根据Windows 9x/NT注册表中mailto协议处理程序的设置确定启动哪个邮件客户程序。 ...有时,不想设置任何信息,也必须传递 一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包 括进程和线程ID。...可以将ID发送到 其它进程,或使用句柄来控制新进程。 ShellExecute和WinExec命令用于简单的作业。如果要完全控制一个新进程,就必须调用CreateProcess。
简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED或SW_MAXIMIZED。...下面程序有控制台程序示例,其使用两种不同的方法,打开文本文件。下面程序使用WinExec,并明确指定使用记事本程序。然后,使用ShellExecute,打开文本文件。 ...⑶ 返回值: 若函数调用成功,则返回值不为0;若函数调用失败,返回值为0。 ShellExecute和WinExec命令用于简单的作业。...有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包括进程和线程ID。...可以将ID发送到其它进程,或使用句柄来控制新进程。
ShellExecute 在不使用管理员权限运行 VS2019 的情况下仍然可以正常打开任何程序,不报 740 错误。...int main() { /* ShellExecute 不需要使用管理员权限打开 VS2019 也可以打开 WinExec 不能打开的程序 */ ShellExecute( NULL,...NULL, // 使用本进程的环境变量 NULL, // 使用本进程的驱动器和目录...我使用 CE 验证的,通过勾选和不勾选 “可写”,可以发现 WCHAR* szCommandLine 的确是只读变量(指针): 既然这样我们只能修改代码: int main() { // 初始化...NULL, // 使用本进程的环境变量 NULL, // 使用本进程的驱动器和目录
常规api创建进程 通过常用的api来创建进程是常规启动进程的方式,最常用的几个api有WinExec、ShellExecute、CreateProcess,我们一个一个来看一下 WinExec 首先是...,//为新进程创建一个新的控制台窗口 NULL,//使用本进程的环境变量 NULL,//使用本进程的驱动器和目录 &si, &pi); if...(); return 0; 这里着重说一下CreateProcess的实现过程 在Windows中,进程是不活动的,只是作为线程的容器,现代操作系统将线程作为最小调度单位,进程作为资源分配的最小单位...); 第二阶段:创建内核中的进程对象 实际上就是创建以EPROCESS为核心的相关数据结构,这就是系统调用NtCreateProcess()要做的事情,主要包括: ①分配并设置EPROCESS数据结构...; ②其他相关的数据结构的设置,如句柄表等等; ③为目标进程创建初始的地址空间; ④对EPROCESS进行初始化; ⑤将系统Dll映射到目标用户空间,如ntdll.dll等 ⑥设置目标进程的
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 ...如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。...简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED或SW_MAXIMIZED。..., //执行程序名 LPTSTR lpCommandLine, // 参数行 //下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性 ...有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包括进程和线程ID。
0x01 木马思路 将样本自身图标伪装成图片或文档,运行样本之后释放资源中的相应的DOC文档以及加载器并设置隐藏文件属性,然后创建进程远程请求域前置服务端解密shellcode并加载到内存中运行...这样该文件就不能在目录中被发现,但是仍然存在可以访问 attrib C:\Users\ThinkPad\AppData\Local\Temp\jqR78D62.exe +s +h 三、创建进程 使用...,//指定当前进程内句柄不可以被子进程继承 CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口 NULL,//使用本进程的环境变量...NULL,//使用本进程的驱动器和目录 &si, &pi); 最后打开诱饵文件,此时cobalt strike已经成功上线。...然后尝试删除包含的文件夹(此处为c:\ myfolder),只有当它为空时才起作用,最后将其自身删除。 效果演示 ?
组件对象不使用方法而用接口来描述自身。接口被定义为“在对象上实现的一组语义上相关的功能”,其实质是一组函数指针表,每个指针必须初始化指向某个具体的函数体,一个组件对象实现的接口数量没有限制。...使用DCOM进行横向移动的优势之一在于,在远程主机上执行的进程将会是托管COM服务器端的软件。...F6A8-11CF-A442-00A0C90A8F39',"192.168.52.138")) # 然后执行如下命令,我们就可以调用该对象的"ShellExecute"方法在远程主机上启动进程: 完整的命令..."方法在远程主机上启动进程:$com.Document.Application.shellExecute("C:\shell.exe")# 完整的命令:[activator]::CreateInstance...:GetTypeFromProgID("Visio.Application","192.168.52.138"))# 然后执行如下命令,我们就可以调用该对象的"shellExecute"方法在远程主机上启动进程
本文记录在 dotnet 下,启动进程,传入不存在的文件夹作为进程的工作目录,分别在 .NET Framework 和 .NET Core 的行为 在 dotnet 6 下,可以使用 ProcessStartInfo...ProcessStartInfo 的 WorkingDirectory 工作路径,那么默认将使用当前进程的 Environment.CurrentDirectory 值作为启动进程的工作路径 在 .NET...Core 和 .NET Framework 下,启动时,设置 UseShellExecute 分别为 true 和 false 的值,行为有所不同。...在不设置 ProcessStartInfo 的 WorkingDirectory 工作路径,让新的进程默认使用 Environment.CurrentDirectory 工作文件夹。...= new ProcessStartInfo(exe, "fx") { UseShellExecute = true, // 也设置为 false
然后我们还应该思考一个问题:为什么在如此多的COM程序中,MMC20.APPLICATION能成为一个利用点?也就是说成为一个利用点的要素是什么? 远程链接 可控性 ........每当应用程序创建COM组件的实例时,都会查询注册表以将组件的CLSID或ProgID解析为包含它的服务器DLL或EXE的路径名。...确定组件的服务器后,Windows会将服务器加载到客户端应用程序的进程空间中(进程内组件),或者在自己的进程空间中启动服务器(本地和远程服务器)。...设置了“启动许可”的对象将如下所示,其中的数据代表二进制格式的对象的ACL: ? 没有明确设置LaunchPermission的用户将没有该特定注册表项。...与大多数其他方法不同,ShellWindows不会创建进程。相反,它会激活现有explorer.exe进程内部的类实例,该进程执行子进程。
领取专属 10元无门槛券
手把手带您无忧上云