如何以新创建的资源管理器进程的子级启动应用程序?

订阅

我正在开发一个类似于信息亭的应用程序。应用程序启动后,它将创建功能有限的新桌面。使用组合键,我可以在桌面之间来回移动。为了通知用户当前正在使用的桌面或我创建的应用程序的其他任何信息,其中显示气球消息的是“系统任务栏”区域。

在新创建的桌面中,我使用函数启动explorer.exeCreateProcess,并通过STARTUPINFO结构提供新桌面,并结构中返回该过程的句柄PROCESS_INFORMATION

使用相同的技术,我试图在新桌面中启动图标任务栏应用程序,从而在STARTUPINFO结构中提供新桌面问题在于,根据任务管理器,应用程序正在运行,但是未显示任务栏图标。

我的直觉说,在新桌面中,未显示图标,因为它不是新explorer.exe进程的子级,来自live.systernalsprocexp应用程序以树表示形式在同一级别上显示这两个进程。

有没有一种方法可以提供一个参数CreateProcess,也许是资源管理器进程句柄,以便图标任务栏应用程序作为该进程的子级启动?

LE:这是我用来创建启动explorer.exe图标托盘进程的代码:

STARTUPINFO sInfoNT; /// startupinfo for the explorer.exe
PROCESS_INFORMATION pInfoNT; /// process infromation for the explorer.exe
ZeroMemory(&sInfoNT, sizeof(sInfoNT));
sInfoNT.lpDesktop = L"threadDesktop"; /// setting the desktop for the process
pInfoNT = startProcess(sInfoNT, L"C:\\Windows\\explorer.exe"); /// starting the process 
if (!pInfoNT.hProcess)
    LOG(ERROR) << "Unable to start the new explorer process";
else
    LOG(INFO) << "Started the new explorer process";

STARTUPINFO sInfoTITD; /// doing the same thing for the tray icon application
PROCESS_INFORMATION pInfoTITD;
ZeroMemory(&sInfoTITD, sizeof(sInfoTITD));
sInfoTITD.lpDesktop = L"threadDesktop";
pInfoTITD = startProcess(sInfoTITD, L"DesktopTrayIcon.exe");
if (!pInfoTITD.hProcess)
    LOG(ERROR) << "Unable to start the tray icon for the new desktop";
else
    LOG(INFO) << "Started the tray icon for the new desktop";

这是startProcess函数:

PROCESS_INFORMATION KioskLauncher::startProcess(STARTUPINFO startUpInfo, LPCTSTR lpApplicationName)
{
    PROCESS_INFORMATION processInformation;
    ZeroMemory(&processInformation, sizeof(processInformation));

    if (!CreateProcess(lpApplicationName, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startUpInfo, &processInformation))
        MessageBox(0, L"Unable to start the process!\nThe path is broken!", L"Path Error!", MB_ICONERROR);

    return processInformation;
}
佐塔

如果您真的想使新流程成为其他流程的子流程,则必须使用代码注入。搜索CreateRemoteThread将为您提供大量的阅读材料。最大的问题是,您的过程必须与目标相同。有3种替代使用方式:

  • DLL注入(标准)
  • 注入实际的shellcode:将自己解决所有依赖关系的汇编代码。(在启用EMET的情况下将无法使用)
  • 从您的应用程序中复制代码块并修复导入(Tricky)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Windows资源管理器中不会显示新创建的文件夹

来自分类Dev

调试通过资源管理器上下文菜单启动的应用程序

来自分类Dev

调试通过资源管理器上下文菜单启动的应用程序

来自分类Dev

Windows10-资源管理器在应用程序启动时崩溃

来自分类Dev

如何使用Azure资源管理器模板创建虚拟应用程序/文件夹?

来自分类Dev

如何知道应用程序是从控制台还是资源管理器运行的?

来自分类Dev

如何以与在资源管理器中以管理员身份启动相同的方式从 cpp 运行程序?

来自分类Dev

.net应用程序在开始挂在进程资源管理器中时被阻止,只有1 MB

来自分类Dev

在启动时运行2个应用程序,而无需运行资源管理器

来自分类Dev

如何从Visual Studio应用程序打开“文件资源管理器”窗口并设置位置和大小?

来自分类Dev

如何从C#应用程序访问Windows资源管理器上下文菜单?

来自分类Dev

资源管理器崩溃后如何将最小化的应用程序带到托盘中?

来自分类Dev

如何使 gedit 成为 Ubuntu 20/文件资源管理器中 HTML 文件的默认应用程序?

来自分类Dev

我可以从Web应用程序打开Windows资源管理器窗口吗?

来自分类Dev

Azure资源管理器模板网站应用程序设置

来自分类Dev

将图像文件从资源管理器拖放到应用程序

来自分类Dev

应用程序图标在资源管理器中损坏

来自分类Dev

将资源管理器中的文件打开到python应用程序中

来自分类Dev

从我的应用程序的 ListView 拖放到外部应用程序(例如 Windows 资源管理器)

来自分类Dev

新创建的 SSIS 包未显示在解决方案资源管理器中,能够在包位置看到 .dtsx 文件

来自分类Dev

编译后Visual Studio冻结。当我尝试启动应用程序时,资源管理器也是如此

来自分类Dev

创建应用程序实例(在服务结构集群资源管理器中)忽略本地计算机上的实例数

来自分类Dev

无法在C#中启动资源管理器进程,仅是窗口文件资源管理器

来自分类Dev

无法在C#中启动资源管理器进程,仅是窗口文件资源管理器

来自分类Dev

获取Windows资源管理器的进程句柄

来自分类Dev

如何在“进程资源管理器”中还原“进程名称”列?

来自分类Dev

如何使用Android设备监视器的文件资源管理器查找我的应用程序的/ data / data

来自分类Dev

Windows 8-无法将文件从资源管理器中拖放到应用程序上

来自分类Dev

在默认的桌面安装中找到文件系统资源管理器应用程序?

Related 相关文章

  1. 1

    Windows资源管理器中不会显示新创建的文件夹

  2. 2

    调试通过资源管理器上下文菜单启动的应用程序

  3. 3

    调试通过资源管理器上下文菜单启动的应用程序

  4. 4

    Windows10-资源管理器在应用程序启动时崩溃

  5. 5

    如何使用Azure资源管理器模板创建虚拟应用程序/文件夹?

  6. 6

    如何知道应用程序是从控制台还是资源管理器运行的?

  7. 7

    如何以与在资源管理器中以管理员身份启动相同的方式从 cpp 运行程序?

  8. 8

    .net应用程序在开始挂在进程资源管理器中时被阻止,只有1 MB

  9. 9

    在启动时运行2个应用程序,而无需运行资源管理器

  10. 10

    如何从Visual Studio应用程序打开“文件资源管理器”窗口并设置位置和大小?

  11. 11

    如何从C#应用程序访问Windows资源管理器上下文菜单?

  12. 12

    资源管理器崩溃后如何将最小化的应用程序带到托盘中?

  13. 13

    如何使 gedit 成为 Ubuntu 20/文件资源管理器中 HTML 文件的默认应用程序?

  14. 14

    我可以从Web应用程序打开Windows资源管理器窗口吗?

  15. 15

    Azure资源管理器模板网站应用程序设置

  16. 16

    将图像文件从资源管理器拖放到应用程序

  17. 17

    应用程序图标在资源管理器中损坏

  18. 18

    将资源管理器中的文件打开到python应用程序中

  19. 19

    从我的应用程序的 ListView 拖放到外部应用程序(例如 Windows 资源管理器)

  20. 20

    新创建的 SSIS 包未显示在解决方案资源管理器中,能够在包位置看到 .dtsx 文件

  21. 21

    编译后Visual Studio冻结。当我尝试启动应用程序时,资源管理器也是如此

  22. 22

    创建应用程序实例(在服务结构集群资源管理器中)忽略本地计算机上的实例数

  23. 23

    无法在C#中启动资源管理器进程,仅是窗口文件资源管理器

  24. 24

    无法在C#中启动资源管理器进程,仅是窗口文件资源管理器

  25. 25

    获取Windows资源管理器的进程句柄

  26. 26

    如何在“进程资源管理器”中还原“进程名称”列?

  27. 27

    如何使用Android设备监视器的文件资源管理器查找我的应用程序的/ data / data

  28. 28

    Windows 8-无法将文件从资源管理器中拖放到应用程序上

  29. 29

    在默认的桌面安装中找到文件系统资源管理器应用程序?

热门标签

归档