学习求职用到的技术ing

       大三了,现在主要是学习技术的时间了,学的是嵌入式专业,但是我感觉自己去做嵌入式还不是那么的自信,所以我还是选择web开发技术方向发展。web无非是做网站了,常用的网站技术,这个学期一开始我就接触到了,javaee,asp.net,php技术。目前因为做一个软件比赛,学习一些php技术,感觉php应该是很容易上手的。

        asp.net 和javaee比php难一些,javaee又比。net难度高一些,这是我目前的体会。  不管用哪个技术,达到目的,并且网站能够稳定快速响应是最重要的。

   这么多技术我感觉都是一样的,只是用不同的壳子包装了一下而已,都是由c++衍生出来的技术。

   这每门技术都都得和数据库打交道,也只有和数据库连上了,用上 了数据库技术,才能算得上web开发。我现在就想快点将那个软件大赛的作品完成,完成了好快点放弃php的学习,专注一门,毕竟门门技术会一点,没有精通熟练是没有用的。在我看来,还不如不学呢。不管那个比赛能否进入复赛我都希望快点完成啊,我的精力很有限。。。。。。

   打散了额,我希望尽快做出一些作品出来,也好有一些自信和成就感。

  


<think>我们正在讨论的是WindowsAPI中的CreateProcessWithTokenW函数。根据引用[1]的链接,这个API属于进程和线程管理的一部分。引用[2]中提到了NtSetInformationProcess函数,虽然不直接相关,但说明创建进程后还需要进行一些设置。引用[3]提到了一些安全相关的哈希传递方法,可能与该API的安全上下文有关。用户问题:CreateProcessWithTokenWAPI的作用及使用方法,需要功能说明和使用教程。首先,功能说明:CreateProcessWithTokenW函数用于创建一个新进程及其主线程,该进程在指定令牌的安全上下文中运行。这通常用于模拟用户的安全上下文来启动进程,在服务或需要提升权限的场景中很常见。使用教程:1.首先需要获取一个令牌(token),这可以通过LogonUser等函数获得。2.然后调用CreateProcessWithTokenW,传入该令牌、应用程序路径等参数。注意:该函数需要SE_IMPERSONATE_NAME权限(通常在服务账户中具有)。由于涉及系统编程,下面给出一个使用示例(C++):```cpp#include<Windows.h>intmain(){HANDLEhToken=NULL;//首先需要获取一个令牌,这里省略获取令牌的步骤(例如通过LogonUser)wchar_tcmdline[]=L"notepad.exe";STARTUPINFOWsi={sizeof(si)};PROCESS_INFORMATIONpi;if(!CreateProcessWithTokenW(hToken,//用户令牌LOGON_WITH_PROFILE,//登录标志:使用用户配置文件NULL,//应用程序名(如果为NULL则使用命令行)cmdline,//命令行CREATE_NEW_CONSOLE,//创建标志NULL,//环境块(使用父进程的)NULL,//当前目录(使用父进程的)&si,//启动信息&pi))//进程信息{DWORDerror=GetLastError();//处理错误...return1;}//清理CloseHandle(pi.hThread);CloseHandle(pi.hProcess);if(hToken)CloseHandle(hToken);return0;}```注意事项:-该函数需要高权限(比如作为服务运行)。-令牌必须是可以模拟的令牌(impersonationtoken)。-如果令牌是从网络登录中获得的,可能需要处理用户配置文件的加载(使用LOGON_WITH_PROFILE)。安全提示:模拟其他用户运行进程时要非常小心,确保令牌的安全性。参考:[^1]:官方文档:CreateProcessWithTokenWfunction(winbase.h)[^2]:创建进程后设置进程信息的过程(虽然不是直接相关,但创建进程后可能需要类似设置)§§相关问题§§1.如何获取一个合适的令牌用于CreateProcessWithTokenW?2.CreateProcessWithTokenW与CreateProcessAsUser之间有什么区别?3.使用CreateProcessWithTokenW时常见的错误有哪些,如何解决?4.该API在哪些实际应用场景中使用?</think> ### CreateProcessWithTokenW API 功能解析与使用指南 #### 功能作用 `CreateProcessWithTokenW` 是Windows API的核心函数,主要用于**创建具有指定安全令牌的新进程**。核心功能包括: 1. **令牌模拟**:允许进程以另一个用户的安全上下文启动新进程 ``` 新进程权限 = 指定令牌的权限 ``` 2. **安全隔离**:适用于服务应用程序需要以特定用户权限执行任务,如: - $service \xrightarrow{CreateProcessWithTokenW} user\_process$ - $admin\_token \xrightarrow{CreateProcessWithTokenW} elevated\_process$ 3. **特权控制**:解决`CreateProcess`权限限制问题,实现精确的UAC绕过和权限提升场景[^1] #### 函数原型 ```cpp BOOL CreateProcessWithTokenW( HANDLE hToken, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInfo ); ``` #### 参数详解 | 参数 | 类型 | 说明 | |------|------|------| | `hToken` | `HANDLE` | **必须**为`TOKEN_QUERY`访问权限的令牌句柄 | | `dwLogonFlags` | `DWORD` | 关键标志:`LOGON_WITH_PROFILE`(加载用户配置) | | `lpApplicationName` | `LPCWSTR` | 可执行文件路径(`NULL`则从命令行解析) | | `lpCommandLine` | `LPWSTR` | 命令行参数(修改内容需注意内存分配) | | `dwCreationFlags` | `DWORD` | 进程创建标志,如`CREATE_NEW_CONSOLE` | | `lpEnvironment` | `LPVOID` | 环境变量块(`NULL`使用父进程环境) | | `lpCurrentDirectory` | `LPCWSTR` | 工作目录路径(`NULL`使用父进程目录) | | `lpStartupInfo` | `LPSTARTUPINFOW` | 窗口启动配置(至少设置`cb`字段大小) | | `lpProcessInfo` | `LPPROCESS_INFORMATION` | 接收新进程的句柄和ID | #### 使用教程(C++示例) ```cpp #include <Windows.h> void RunAsUser(LPWSTR command) { HANDLE hToken = NULL; STARTUPINFOW si = { sizeof(si) }; PROCESS_INFORMATION pi; // 步骤1:获取目标用户令牌(此处简化,实际需用LogonUser等) OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE, &hToken); // 步骤2:创建进程 if(CreateProcessWithTokenW( hToken, // 用户令牌 LOGON_WITH_PROFILE, // 加载用户配置 NULL, // 使用命令行指定程序 command, // 命令(如L"notepad.exe") CREATE_UNICODE_ENVIRONMENT, // 标志位 NULL, // 使用父进程环境 NULL, // 使用父进程工作目录 &si, // 启动配置 &pi)) // 进程信息 { WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } CloseHandle(hToken); } ``` #### 安全注意事项 1. **令牌来源验证**: - 令牌必须通过`LogonUser`或合法认证获取 - 禁止使用未经验证的令牌句柄 2. **权限最小化**: ```math \text{所需权限} = \text{MAX}( \text{目标操作权限}, \text{TOKEN_QUERY} ) ``` 3. **配置文件加载**: - 使用`LOGON_WITH_PROFILE`时需确保目标用户有合法配置文件 - 错误代码`ERROR_BAD_PROFILE`表示配置文件损坏 4. **UAC影响**: - 在UAC启用环境下,新进程会继承令牌的完整性级别 - 中等完整性令牌创建的进程无法直接访问高完整性资源[^2] > 实际调用时,创建进程后仍需通过`NtSetInformationProcess`等API进行进程优先级、默认模式等设置[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值