首页
学习
活动
专区
工具
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应用程序中创建一个没有管理员权限的新进程。

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

相关·内容

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

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

1.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.0Web站点和应用程序被放置在相同应用程序池里。...这个默认应用程序运行在“NetworkService”账号。作为一名管理员,你可以手动创建应用程序池并且把Web应用程序指派给这些池。...默认情况,这些应用程序池也将运行在“NetworkService”账号,这就会导致一个令人不快运行时场景:所有的Web应用程序运行在相同权限。...在IIS 6.0里,IIS_WPG组提供了运行一个工作者进程所需最小权限,而且你必须手动地将账号添加到该组,从而为一个工作者进程提供自定制身份凭证。

1.9K100

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

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

52840

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

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

3.5K40

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

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

2.2K20

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

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

3.6K90

实战 | BypassUAC研究和思路

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

1.2K20

关于bypassuac探究

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

1.4K20

关于bypassuac探究

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

95010

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

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

1.2K40

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

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

15510

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.1K20

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

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

1.7K60

Windows 权限提升

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

3.6K20

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:这里与常见正则表达式模糊匹配(*)方式不同,

65140

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.8K20

如何使用Auto-Elevate实现UAC绕过和权限提升

该工具能够实现UAC以及其他一些Windows内置功能绕过,该工具能够自动定位winlogon.exe,并能够窃取和模拟该程序进程令牌,然后使用窃取来令牌生成一个系统级进程。...技术介绍 该工具是一款功能强大提权和系统安全测试工具,下图显示是Auto-Elevate将一个低等级权限管理员账号提升为SYSTEM步骤流程: 工具运行流程 1、工具通过使用CreateToolhelp32Snapshot...来调用DuplicateTokenEx并复制伪造令牌句柄,这将创建一个我们可以使用令牌副本; 7、在令牌副本帮助,我们就可以通过调用CreateProcessWithTokenW来生成一个CMD...工具使用 下图中演示了如何在Windows 10 21H1操作系统平台上,使用UACME结合Auto-Elevate来将一个低等级权限管理员账号提升为NT AUTHORITY\SYSTEM: 下图演示了如何在不使用...UAC绕过技术情况,将一个高低等级权限管理员账号提权为SYSTEM: 项目地址 https://github.com/FULLSHADE/Auto-Elevate 参考资料 https://attack.mitre.org

43310

看我如何在渗透测试过程中发现并利用Serv-U漏洞进行操作系统提权

最近,我在做一个外网渗透测试过程,发现了SolarWinds文件共享程序Serv-U一个漏洞,通过该漏洞我获得了Serv-U管理权限,并能以系统用户身份执行远程代码,成功完成操作系统提权。...没过一会,通过对这些响应信息手工验证后发现,当提交登录请求包含了X-Forwarded-For头为127.0.0.1POST请求信息时,Serv-U程序将以本地管理员身份响应一个有效Session...虽然该POST请求通过Firefox浏览器会产生一个如下错误提示: ? 但其本地管理员身份Session会话却是有效,利用该Cookie构造GET请求: ?...进一步利用 经过一番研究发现,攻击者可以利用http://127.0.0.1:43958/Admin/ServerLimits.htm页面集成库文件导入功能(intergration library...不出意外,通过该DLL文件反弹shell,我们获得了Serv-u所在系统管理员权限

2.4K60

Argo CD 实践教程 07

但是为了不失去对系统访问权限,我们需要首先创建一个权限较少本地用户,它将允许我们执行日常任务。我们将其命名为alina,并允许它访问UI和CLI。...,以便Argo CD应用我们配置更改(为了在推送时自动应用此ConfigMap,您需要安装和配置Argo CD,第3章“运行Argo CD”所述)。...): 如果我们查看为该用户创建令牌(在accounts.alina.tokens字段),我们将看到它实际上是null,这意味着我们目前没有创建任何令牌。...我们现在将把默认策略设置为只读,并检查如何在使用访问令牌时添加特定权限。...我们已经看到了如何以声明性方式处理用户,如何创建本地用户并禁用管理员,以及密码如何处理。接下来,我们将学习用于自动化用户,即所谓服务账户。

27320
领券