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

如何在管理员模式下运行的MFC应用程序中创建一个没有管理员权限的新进程?

在管理员模式下运行的MFC应用程序中创建一个没有管理员权限的新进程,可以通过以下步骤实现:

  1. 使用Windows API函数CreateProcess创建新进程。CreateProcess函数的参数中,lpApplicationName指定要运行的可执行文件路径,lpCommandLine指定命令行参数,lpProcessAttributes和lpThreadAttributes指定进程和线程的安全属性,bInheritHandles指定是否继承父进程的句柄,dwCreationFlags指定创建标志,lpEnvironment指定新进程的环境变量,lpCurrentDirectory指定新进程的工作目录,lpStartupInfo指定新进程的启动信息,lpProcessInformation返回新进程的信息。
  2. 在CreateProcess函数的参数中,设置lpProcessAttributes和lpThreadAttributes参数为NULL,以使用默认的安全属性。
  3. 设置bInheritHandles参数为FALSE,以确保新进程不会继承管理员权限。
  4. 设置dwCreationFlags参数为0,以使用默认的创建标志。
  5. 设置lpEnvironment参数为NULL,以使用当前进程的环境变量。
  6. 设置lpCurrentDirectory参数为NULL,以使用当前进程的工作目录。
  7. 设置lpStartupInfo参数的cb成员为sizeof(STARTUPINFO),dwFlags成员为0,以使用默认的启动信息。
  8. 调用CreateProcess函数创建新进程,并将返回的进程信息保存在lpProcessInformation参数中。

以下是一个示例代码:

代码语言:txt
复制
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

// 创建新进程
if (CreateProcess(NULL,   // 可执行文件路径
    "新进程命令行参数",  // 命令行参数
    NULL,               // 进程安全属性
    NULL,               // 线程安全属性
    FALSE,              // 不继承句柄
    0,                  // 创建标志
    NULL,               // 使用当前环境变量
    NULL,               // 使用当前工作目录
    &si,                // 启动信息
    &pi))               // 进程信息
{
    // 新进程创建成功
    // 可以通过pi.hProcess和pi.dwProcessId来操作新进程
    // ...

    // 关闭进程和线程的句柄
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}
else
{
    // 新进程创建失败
    // 处理错误
}

需要注意的是,管理员模式下运行的MFC应用程序本身具有管理员权限,因此无法直接创建一个没有管理员权限的新进程。可以通过创建一个中间进程,该中间进程以普通权限运行,并由管理员模式下的MFC应用程序启动该中间进程,再由中间进程创建没有管理员权限的新进程。这样可以实现在管理员模式下运行的MFC应用程序中创建一个没有管理员权限的新进程。

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

相关·内容

【权限维持】域控后门&SSP&HOOK&DSRM&SID&万能钥匙

Restore Mode,目录服务恢复模式)是windows域环境中域控制器的安全模式启动选项。...域控制器的本地管理员账户也就是DSRM账户,DSRM密码是在DC创建时设置的,一般很少更改。DSRM的用途是:允许管理员在域环境出现故障时还原、修复、重建活动目录数据库。...每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。...) 3、测评给与前后的DC访问权限: dir \\192.168.3.21\c$ 技术总结: 把域控管理员的SID加入到 其他某个 恶意的域账户的SID History中,然后,这个恶意的(我们自己创建的..., 所以它只存在内存中,如域控重启,万能密码将失效。

9610

在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)

在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。...对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。 然而,一个进程运行之后启动的子进程,会继承当前进程的 UAC 权限;于是有时我们会有降权运行的需要。...本文的降权运行指的是: 有一个 A 程序是以管理员权限运行的(典型的,如安装包); 有一个 B 程序会被 A 启动(我们期望降权运行的 B 程序)。...,可以参考我的另一篇博客: Windows 下使用 runas 命令以指定的权限启动一个进程(非管理员、管理员) - 吕毅 方法二:使用 explorer.exe 代理运行程序 请特别注意,使用 explorer.exe...因为绝大多数用户启动系统的时候,explorer.exe 进程都是处于运行状态,而如果启动一个新的 explorer.exe,都会自动激活当前正在运行的进程而不会启动新的。

2K40
  • Windows 中的 UAC 用户账户控制

    SYSTEM 在系统中拥有最高权限。 默认我们安装 Windows 时会创建一个管理员账户,这也是 Windows 系统推荐我们使用的管理员账户,其权限等级比 SYSTEM 低。...关于如何通过 Manifest 设置管理员权限运行,可以参考我的另一篇博客: 应用程序清单 Manifest 中各种 UAC 权限级别的含义和效果 权限提升 在 Windows 系统中,不同权限的进程是隔离的...你有很多种方法来提权,甚至绕过 UAC 来提权,但无论哪一种,你的进程实际上都是重启了,你是在新的提升的进程中执行了这个需要权限的操作。...对于管理员账户,如果启动一个普通进程,那么此进程在管理员账户下运行,获得的是 Medium 访问令牌。...当此进程提升权限,将弹出 UAC 提示框,用户同意后继续使用此同一个管理员账户运行,但子进程将获得 High 访问令牌。

    2.1K10

    IIS 7.0的六大安全新特性为你的Web服务器保驾护航

    Web应用程序运行在工作者进程(worker processes)下。应用程序池把Web应用程序映射到工作者进程。一个特定的工作者进程只用于运行作为相同应用程序池的一部分的应用程序。...在IIS 6.0和IIS 7.0中,工作者进程是“w3wp.exe”。 在IIS 6.0中,新的Web站点和应用程序被放置在相同的应用程序池里。...这个默认的应用程序池运行在“NetworkService”账号下。作为一名管理员,你可以手动创建新的应用程序池并且把Web应用程序指派给这些池。...默认情况下,这些应用程序池也将运行在“NetworkService”账号下,这就会导致一个令人不快的运行时场景:所有的Web应用程序都运行在相同的权限下。...在IIS 6.0里,IIS_WPG组提供了运行一个工作者进程所需的最小权限,而且你必须手动地将账号添加到该组,从而为一个工作者进程提供自定制的身份凭证。

    2K100

    内网渗透之内网权限维持

    )是Window域环境中域控制器的安全模式启动选项,每个域控制器都有一个本地管理员账户(也就是DSRM账户)。...lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD Step 6:使用DSRM账户通过网络远程登录域控制器 此时在域成员主机的管理员模式下访问域控需要权限认证...和Empire来完成Skeleton Key的操作,并分析其使用方法和防御措施 维权操作 Mimikatz 在域控制器中以管理员权限运行Mimikatz,之后执行以下命令,将SKeleton Key注入域控制器的...LSA保护策略,以防止lsass.exe进程被恶意注入,从而防止mimikatz在非允许的情况下提升到Debug权限,通用的Skeleton Key的防御措施列举如下: 域管理员用户设置强口令,确保恶意代码不会在域控制器中执行...在所有域用户中启用双因子认证 启动应用程序白名单(Applocker),以限制mimikatz在域控上运行 在日常网络维护中注意以下方面,也可以有效防范Skeleton Key: 向域控制器注入Skeleton

    25010

    内网渗透之内网权限维持

    Skeleton Key 原理:当拿到域控权限后,使用mimikatz可以注入Skeleon Key,将 Skeleton Key 注入域控制器的 lsass.exe 进程,这样会在域内的所有账号中添加一个相同的...(由于域控一般不会经常重启,所以可以通过注入到lsass.exe进程中,进行权限维持。...dsrmadminlogonbehavior" -value 2 -propertyType DWORD 6、使用DSRM账号通过网络远程登录域控制器 使用Mimikatz进行哈希传递,在域成员机器的管理员模式下打开...在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。 SID History是在域迁移过程中需要使用的一个属性,为了解决用户在迁移到另一个域中的时候权限会改变的问题。...原理:把域控管理员的SID加入到 其他某个恶意的域账户的SID History中,然后,这个恶意的(我们自己创建的)域账户就可以用域管理员权限访问域控了。

    7810

    应用程序清单 Manifest 中各种 UAC 权限级别的含义和效果

    阅读我的另一篇博客可以了解: 如何创建应用程序清单文件 App.Manifest,如何创建不带清单的应用程序 - 吕毅 各种不同的 UAC 清单选项 从默认生成的应用程序清单中,我们可以很容易的知道有四种不同的设置...默认情况下用户启动应用程序都是使用 Windows 资源管理器(explorer.exe)运行的;在开启了 UAC 的情况下,资源管理器是以标准用户权限运行的。...于是对于用户点击打开的应用程序,默认就是以标准用户权限运行的。 如果已经以管理员权限启动了一个程序,那么这个程序启动的子进程也会是管理员权限。...典型的情况是一个应用程序安装包安装的时候使用管理员权限运行,于是这个安装程序在安装完成后启动的这个应用程序进程实例就是管理员权限的。...这种情况下,那个管理员权限运行的程序会以为当前运行在 lvyi 这个账户下,程序员需要小心这里的坑,因为拿到的用户路径以及注册表不是你所期望的 walterlv 这个账号下的。

    82840

    Windows 下使用 runas 命令以指定的权限启动一个进程(非管理员、管理员)

    在默认情况下,Windows 系统中启动一个进程会继承父进程的令牌。如果父进程是管理员权限,那么子进程就是管理员权限;如果父进程是标准用户权限,那么子进程也是标准用户权限。...我们也知道,可以使用一些方法为自己的应用程序提权。但是有没有方法可以任意指定一个权限然后运行呢?本文将介绍 Windows 下指定权限运行的做法。...提权运行或者降权运行 为了演示提权或者降权,我们需要有一个能够验证当前是否是管理员权限运行的程序。...关于如何在程序中判断当前是否以管理员权限运行,可以阅读我和林德熙的博客: dotnet 判断程序当前使用管理员运行降低权使用普通权限运行 - 林德熙 在 Windows 系统上降低 UAC 权限运行程序...提权运行或者降权运行 我以标准用户权限和管理员权限分别启动了一个 PowerShell Core,然后准备在这两个窗口里面分别启动我的检测管理员权限的程序。

    7K40

    正确理解Linux运行级别那点事儿

    您可以将Linux运行级别视为操作系统运行的不同“模式”。每一种模式或运行级别都有自己的进程和服务列表,这些进程和服务要么被打开,要么被关闭。...我们可以在Linux中创建新的运行级别吗? Linux运行级别的重要性 您可能已经使用Linux多年了,而没有意识到有不同的运行级别。这是因为大多数服务器管理员不需要经常配置它。...如果您想要一个不同的运行级别,只需用一个不同的数字代替命令中的“ 3”即可。 作为参考,该命令中的-f开关指示在创建新链接之前应删除目标文件。您也可以先使用简单的rm命令将其删除。...这用于确保您是服务器上的唯一服务器(甚至没有启动网络服务),并且可以不间断地执行维护。 在极少数情况下,您甚至可能需要使用运行级别4。这仅在您或系统管理员具有自定义配置的运行级别的特定情况下使用。...如您所料,您不会(也无法)在运行级别0或6上运行系统,但是可以切换到它们以重新启动或关闭电源。通常不需要这样做,因为还有其他命令可以帮助我们完成此任务。 我们可以在Linux中创建新的运行级别吗?

    2.3K20

    揭秘:安卓木马是如何盗取用户手机银行的

    从本质上讲,设备管理员权限赋予了这款恶意软件禁止用户强制停止和卸载app的权利,它的进程决定了移除它非常困难。 ? 图1:安装、许可和设备管理员 ?...图6:安卓的清单 这款恶意软件可以通过创建伪造银行窗口来进行网络钓鱼获取被然后用户的银行信息,如信用卡帐号、账单地址、银行用户名、PIN和密码等等。...图12:获取正在运行进程的包的名字 如果匹配的应用程序被发现正在受感染设备上运行,负责回应的类会显示上映的伪造的登录页面。 ?...图18:创建服务处理函数从接收器被调用 我们可以从图18看出,恶意软件丢弃使用硬编码文件名的SD卡中的隐藏文件。 ?...接下来,点击并按住电源关闭直到手机提示你重新启动到安全模式,然后点击确定。如果你的设备没有翻译,你可以百度一下,"你的手机型号如何进入安全模式"。 ?

    3.7K90

    实战 | BypassUAC的研究和思路

    使用UAC,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。...然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制:管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:...如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。 •程序只能在运行前要求提权。...如果已经在运行了,那么将失去申请提权的能力•权限提升仅对此次进程有效 提升权限的操作大致有两个: •自动提权请求•手动提权请求 手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限...,如:注册表编辑器 在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。

    1.4K20

    关于bypassuac的探究

    使用UAC,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。...然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制: 管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:...如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。 程序只能在运行前要求提权。...如果已经在运行了,那么将失去申请提权的能力 权限提升仅对此次进程有效 提升权限的操作大致有两个: 自动提权请求 手动提权请求 手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限...,如:注册表编辑器 在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。

    1.5K20

    关于bypassuac的探究

    使用UAC,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。...然后我们在左侧窗口找到“计算机配置–Windows设置–安全设置–本地策略–安全选项”,再在右侧窗口找到“用户帐户控制:管理员批准模式中管理员的提升权限提示的行为”,双击该条目,打开设置窗口,如下图:...如果当前用户的用户组权限不是管理员,提权操作是要求输入管理员密码的,这点和在Linux中的相应操作类似。 •程序只能在运行前要求提权。...如果已经在运行了,那么将失去申请提权的能力•权限提升仅对此次进程有效 提升权限的操作大致有两个: •自动提权请求•手动提权请求 手动提权就是“以管理员身份运行”,自动提权请求就是程序本身就一运行就开始申请权限...,如:注册表编辑器 在开发的过程中,程序员若要开发一个程序,可以在编译器配置,写入一个配置文件,用于向系统标识该应用程序是必须要管理员权限运行的。

    1K10

    原创 Paper | 利用 SSPI 数据报上下文 bypassUAC

    当对系统的更改需要管理员权限的时候,UAC 就会通知用户审核,提供允许或拒绝的选项。它使应用程序和任务始终在非管理员账户的安全上下文中运行,除非管理员专门授权管理员级别的权限。如图1所示。...这时服务以本身的主令牌启动运行,当收到上传的请求时,服务会创建一个新线程来,新而线程将使用模拟令牌以一个较低的权限来执行后续操作。如图4所示。...首先需要在管理员模式下的 PowerShell 中安装并导入 NtObjectManager,这里推荐安装在C盘目录下。装并导入 NtObjectManager 命令如下。...这里需要注意的一点是,如果 $p 部分按照文章中的分段进行输入,那么需要在核心模式下运行,也就是需要将命令写入一个 ps1 文件然后执行。如果不想创建一个 ps1 文件,那么可以将命令写为一行。...当然,这里的登录会话指的是在数据报式身份验证时,Lsass创建的新的登录会话。在创建新的登录会话之后会先创建一个高权限的令牌,接着再创建一个受限的令牌然后将两者链接起来。

    24210

    Confluence 6 安全概述和建议概述 原

    在 Confluence 中将会没有其他机制能够获得用户的密码——除了通过密码重置的方法,一个重置密码的电子邮件链接将会发送到用户注册使用的电子邮件地址中。...当外部的用户管理被启用后,用户的密码将会存储在外部用户管理系统中。 换从区溢出 Confluence 100% 的纯 Java 应用程序而没有使用本地组件。...脚本(Script )注入 Confluence 是一个自容器的 Java 应用程序,并不能运行在外部的进程中。因此 Confluence 能够对脚本注入攻击具有很高的抵抗性。...跨站点脚本 作为一个内容管理系统,允许用户能够在系统中创建内容,并且将创建的内容发布在网络上。...系统管理员可以直接安装插件,对 Confluence 的性能和配置进行调整。 与其他任何应用程序一样,你不应该将 Confluence 在 root/Administrator 用户权限运行。

    1.2K40

    Windows 权限提升

    前面加载顺序蓝色部分可以理解安全的(默认情况下用户对这些目录没有写入的权限),最容易权限配置错误是程序所在目录和PATH变量中的目录,如果用户对这些权限拥有写入的权限,例如在程序所在目录写入一个恶意的DLL...如果管理员没有对其检查,则该应用程序的文件夹容易收到攻击,以下使两种常见的情况: 安装程序创建了一个服务,该服务以NT AUTHORITY\SYSTEM运行并从该目录执行程序。...Mandatory Label\Low Mandatory Level(S-1-16-4096):不对应任何一个用户组,为特殊保护的应用程序准备的,如Internet Explorer使用low级别运行进程...可能大家有一个这样的经历,某程序在执行过程中要求启用弹出UAC要求使用管理员权限,同意之后获得高权限,但实际上,此时操作的应用进程完整性等级为 high,UAC之前应用完整性等级为medium,本质上是以管理权限重新开启了应用程序...: 在管理批准模式下运行所有管理员。”

    3.7K20

    Oracle 12c多租户架构及优缺点

    一、多租户概念 Oracle多租户环境包含一个容器数据库(CDB)和零个或多个可插拔数据库(PDB),一个PDB是一个模式,模式对象,以及非模式对象,如到一个Oracle网络客户端作为非CDB。...零个或多个用户创建的PDB 一个PDB包含特定功能集所需的数据和代码。例如,PDB可以支持特定应用,如人力资源或销售应用。您可以根据业务需求添加PDB。 PDB属于零个或一个应用程序容器。...应用程序种子是可选的应用程序PDB,用作用户创建的PDB模板,使您能够快速创建新的应用程序PDB。 一个种子PDB 种子PDB是CDB可用于创建新的PDB的系统提供的模板。...2、没有应用容器的CDB 此示例显示一个简单的CDB,其中包含五个容器:系统容器(整个CDB),CDB根,PDB种子和两个PDB。每个PDB都有自己的专用应用程序。不同的PDB管理员管理每个PDB。...如下图没有应用程序容器的CDB ? 3、带有应用程序容器的CDB 在本变体中,CDB包含一个名为的应用程序容器saas_sales_ac。

    2.4K20

    Windows 7社区发布活动 -- Windows 7兼容性概述

    而且UAC经常导致用户确认提升权限,特别是像开发人员这类的用户,开发人既是一个普通人员,更多时候需要管理员的权限运行,导致有非常差的用户体验。...2、文件与注册表虚拟化技术:Vista系统采用了文件与注册表虚拟化技术,它可以使某些在旧版 Windows中必须要求管理员权限的应用程序以非管理员的权限运行(为每个用户帐户分别建立一套应用程序所需的文件与注册表副本...在Session 0中同时运行系统服务和应用程序会给操作系统带来一些安全风险,因为服务运行在一个更高的用户权限下,这就使得系统服务成为那些想要提升自己权限的病毒或者恶意软件的攻击目标。...而应用程序则被跟系统服务隔离开来,这是因为应用程序运行在由用户登录系统后创建的一系列session中。...在不同Session中运行的实体,相互之间不能发送Windows消息、共享UI元素或者是在没有指定他们有权限访问全局名字空间(并且提供正确的访问控制设置)的情况下,共享核心对象。

    1.7K60

    SonarQube系列-全面了解认证&授权的配置,基于权限模块快速授权用户-群组-项目

    认证机制 可通过多种方式来管理认证机制: 通过SonarQube內建的user/group数据库 通过外部程序(如LDAP) 通过HTTP headers Sonar用户 当你在SonarQube数据库中创建用户时...默认情况下,admin是本地账户。 同样,所有非本地(non-local)账户将仅针对外部工具进行身份认证。 管理员可以管理所有用户的「Tokens」——创建和删除。...SonarQube附带默认权限模板,该模板在创建项目,项目组合或应用程序自动授予特定组的特定权限。...sonarqube在创建新权限模板的时候,提供了Project Key Pattern(项目标识模式)功能,可以通过其正则表达式将权限模板自动授予到project_key符合的项目 「选择“配置-权限...-权限模板”创建新模板」 image.png 「设置名称、描述、项目标识模式(使用sonarqube的正则表达式)」 .* 表示匹配0到多个字符(ps:这里与常见的正则表达式的模糊匹配(*)方式不同,

    1.1K40

    Bypass-UAC(用户帐户控制)的那些事

    换句话说,它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。...除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。...一些没有管理员权限无法完成的操作: 注册表修改(如果注册表项在HKEY_LOCAL_MACHINE下(因为它影响多个用户),它将是只读的) 加载设备驱动程序 DLL注入 修改系统时间(时钟) 修改用户帐户控制设置...常见的利用方式有: DLL注入(RDI技术),一般注入到常驻内存的可信进程,如:explorer DLL劫持,常和注册表配合使用达到劫持目的 DLL劫持 exe文件运行时会加载许多dll文件,这些dll...但这只是dll劫持的其中一种途径,他有这些途径: (1) DLL替换:用恶意的DLL替换掉合法的DLL (2) DLL搜索顺序劫持:当应用程序加载DLL的时候,如果没有带指定DLL的路径,那么程序将会以特定的顺序依次在指定的路径下搜索待加载的

    1.9K20
    领券