冒充标准用户

2023-12-19

我正在尝试创建一个正在运行的进程,该进程被提升为使用标准用户令牌重新启动资源管理器。

我所做的是首先以管理员身份运行主进程,然后拍摄运行的快照:

if (Process32First(hSnapshot,&pe32))
    {
        do
        {
            if (!wcsicmp(pe32.szExeFile, L"explorer.exe"))
            {
                DWORD dwExplorerSessId = 0;
                if (ProcessIdToSessionId(pe32.th32ProcessID, &dwExplorerSessId) && dwExplorerSessId == dwSessionId)
                {
                    dwExplorerLogonPid = pe32.th32ProcessID;
                    break;
                }
            }

        } while (Process32Next(hSnapshot, &pe32));
    }

    CloseHandle(hSnapshot);

然后,一旦我获得在标准用户帐户下运行的资源管理器的 PID,我就会调用:

OpenProcessToken(hProcess,TOKEN_DUPLICATE | TOKEN_QUERY | TOKEN_IMPERSONATE
            ,&hPToken))

然后我打电话:

ImpersonateLoggedOnUser(hPToken);

最后我 taskkill explorer.exe 并再次 shell 执行它,但它在管理员权限下运行。

就好像 impersonateLoggedonUser 不起作用。虽然它返回 true 并且 GetLastError() 返回 0;

我也尝试过使用 CreateProcessAsUser() 但这总是给出 ERROR_FILE_NOT_FOUND:

    STARTUPINFO si;
    GetStartupInfo(&si);                
    PROCESS_INFORMATION pi;
    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));

    TCHAR tchcmd[MAX_PATH];
    _tcscpy(tchcmd, _T("explorer.exe"));
    PVOID penv;
    CreateEnvironmentBlock(&penv, hToken, FALSE);
HANDLE hNewToken;
DuplicateTokenEx(hToken, TOKEN_ALL_ACCESS, NULL, SecurityIdentification, TokenImpersonation, &hNewToken);
    CreateProcessAsUser(, NULL, tchcmd, 0, 0, 0, CREATE_DEFAULT_ERROR_MODE, penv, 0, &si, &pi );

任何想法或建议。


你打电话吗重复令牌Ex http://msdn.microsoft.com/en-us/library/aa446617(VS.85).aspx在使用令牌之前?你应该。

代替模拟登录用户 http://msdn.microsoft.com/en-us/library/aa378612(VS.85).aspx,你可以更轻松地调用创建进程为用户 http://msdn.microsoft.com/en-us/library/ms682429(VS.85).aspx.

编辑以匹配您的:

  • 顺便说一句,您的 CreateProcessAsUser 应该通过:CREATE_DEFAULT_ERROR_MODE | CREATE_UNICODE_ENVIRONMENT为了dwCreationFlags.

  • 您还应该错误检查您的CreateEnvironmentBlock.

  • 您还应该调整Ace http://support.microsoft.com/kb/165194 of the desktop and window station.

  • 您应该首先使用 ExpandEnvironmentStringsForUser 展开字符串中的所有环境变量,而不是直接在 CreateProcessByUser 中指定路径。例如,这将转换:%windir%\explorer.exe to C:\windows\explorer.exe

.

wchar_t szNewCommandLine[MAX_PATH];
if(!::ExpandEnvironmentStringsForUser(hNewToken, tchcmd, szNewCommandLine, MAX_PATH - 1))
{
    DWORD dwExpandEnvLastError = GetLastError();
    //error handling
}   

如需进一步阅读,请参阅这篇关于会话、窗口站和桌面管理的文章 http://brianbondy.com/blog/id/100/understanding-windows-at-a-deeper-level-sessions-window-stations-and-desktops.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

冒充标准用户 的相关文章

  • Golang - 更改 Windows 上的构建工作路径

    我正在使用 SublimeText3 GoSublime 插件 在 Windows 8 上测试简单的 Go 程序 go run v example go 在运行之前它正在内部编译 应用程序数据 本地 温度 目录 我的防病毒程序认为这是病毒并
  • Fortran DLL 导入

    Fortran 中有一段代码罗伯特 L 帕克和菲利普 B 斯塔克 http www stat berkeley edu 7Estark Code sbvq f FORTRAN subroutine bv key m n a b bl bu
  • 为什么单击 ToolStrip 按钮两次时会引发 NullReferenceException - openFileDialog.showDialog()?

    我创建了一个干净的 Windows 窗体应用程序解决方案 添加了ToolStrip到主窗体 并在其上放置一个按钮 我还添加了一个OpenFileDialog 所以这样Click event of the ToolStripButton看起来
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 图像的 EMGU/OpenCV FFT 未产生预期结果

    我正在尝试使用 EMGU 可视化图像的 FFT 这是我正在处理的图像 这是预期的结果 Here s what I get 这是我的代码 Image
  • 通过模板参数向类添加方法

    我希望在类中拥有一个模板参数特定函数 取消启用enable if 它的名称保持不变 参数类型有所不同 尽管这应该不相关 因为只有一个被初始化 enum class MyCases CASE1 CASE2 template
  • FileMode 和 FileAccess 以及 IOException:进程无法访问文件“filename”,因为它正在被另一个进程使用

    我有一个应用程序 A 它生成一个用于跟踪的文本文件 同时 应用程序 B 需要读取相同的文本文件并附加在邮件消息中 但当应用程序 B 尝试读取文本文件时 出现以下错误 IOException 进程无法访问文件 filename 因为它 正在被
  • 如何在类中使用常量类变量声明常量数组?

    如何在类中使用常量类变量声明常量数组 是否可以 我不想要动态数组 我的意思是这样的 class test const int size int array size public test size 50 int main test t 5
  • 底层连接已关闭:接收时发生意外错误

    我来这里是因为我在通过 ftp 协议下载一些文件时遇到问题 这很奇怪 因为它偶尔会发生 甚至对于同一个文件也是如此 只是一个精确度 我正在下载非常大的文件 从 500 Mo 到 30Go 以下是我的函数返回的异常类型 抱歉 这是法语 Sys
  • Caliburn.Micro 事件聚合器

    如果这是一个非常愚蠢的问题 请道歉 但我刚刚开始使用 caliburn micro 我正在努力获取 eventAggregator 似乎没有任何内容订阅 我不确定问题是出在视图模型还是引导程序上 这是视图模型 class MainWindo
  • Lambda 通过引用捕获右值引用

    下面的代码标准正确吗 godbolt https godbolt org z VE0NWz IE by ref 捕获表示临时的转发引用 并从函数返回结果 lambda 按值 在同一个表达式中 当然 存储 lambda 供以后使用会使其包含悬
  • CMD shell 中的可用空间

    有没有办法在 CMD 中获取磁盘或文件夹的可用磁盘空间量 无需安装一些第三方应用程序 我有一个 CMD 可以将一个大文件复制到给定目录 当然可以使用 复制命令返回错误级别 但我必须等待时间 需要复制文件 例如 然后磁盘已满并且复制操作失败
  • OpenMP while 循环中的手动同步

    我最近开始使用 OpenMP 为大学的一个项目做一些 研究 我有一个矩形且均匀分布的网格 在该网格上我使用迭代方案求解偏微分方程 因此 我基本上有两个 for 循环 网格的 x 方向和 y 方向各一个 并由 while 循环包裹以进行迭代
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • powershell 和 cmd 之间的文件大小不同[重复]

    这个问题在这里已经有答案了 我正在使用一点processconf js工具来构建configuration json来自多个文件 json files 这是我正在使用的命令 node processconf js file1 json fi
  • 在memcpy缓冲区UB上使用reinterpret_cast吗?

    给定代码 struct A auto obj new A std vector
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi
  • phpMyAdmin 配置存储未完全配置

    我已经在 Windows 上安装了 xampp 5 6 14 我打开phpmyadminhttp localhost phpmyadmin http localhost phpmyadmin 但警告 phpMyAdmin配置存储没有配置完全
  • 为什么 Windows 只允许一个应用程序访问网络摄像头? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在尝试用 C 制作一个示例网络摄像头应用程序 我发现该应用程序无法同时运行 Skype 或 Oovoo 或任何其他应用程序运行 反之亦然 为什么
  • 在 Python 中窗口“失焦”时读取 HID 输入

    我在一个问题上苦苦挣扎了好几天 但无法让它发挥作用 我刚刚开始使用 python 现在已经面临着我在这个项目中将面临的最大问题 情况是这样的 我必须编写一个扫描条形码的程序 将其传达给在线服务并打印 PDF 这一切都很好 但我也想在窗口 失

随机推荐

  • jq 按键值排序

    给定以下 JSON 为了示例而过于简化 我需要按键的值对键进行排序 在这种情况下 顺序应该是 id gt name gt type link attributes value ConfigurationElement name type v
  • 测试时不会出现用于保存凭据的 Google Smart Lock 对话框

    我正在尝试将用户的 Facebook 凭据保存到 Google Smart Lock 但测试时遇到困难 我能够显示一次保存提示 但在我进入保存的密码 passwords google com 并删除保存的凭据后 提示不再出现 我进入谷歌设置
  • 如何创建 C# 会话对象包装器?

    如何创建一个可以像 IIS 一样获取和设置的类库Session我使用的对象var x objectname key 获取值或objectname key x设置值 通常我只有一个静态类来包装我的会话数据并使其类型安全 例如 public s
  • Google Custom Search Api 不断给我“usageLimits”错误

    我最近使用 Google 的自定义搜索 Api 注册了密钥 我达到了每日限额 因此注册了计费以启用更多请求 但是 我不断收到 usageLimit 错误 在我的项目的计费设置中 我看到计费已启用 在启用的 Api 中 我看到 自定义搜索 A
  • 找出金额中有多少千、百、十

    我有一个 asp 应用程序 金额栏就在那里 我需要查出这个数字有多少万 几百 几十 例如 如果我的金额为 3660 意味着 1000 3 100 6 10 6 像这样我需要 有谁能够帮助我 简单的答案是将该数字除以 1000 无论该金额中
  • 使用 StaticFileHandler 在 Tornado Python 上托管文件

    您好 我正在尝试在 Tornado 中使用 StaticFileHandler 其大部分工作正常 除了当我单击下载时它在网页中输出文件 csv 之外 我保存文件的唯一方法是右键单击并说 目标另存为 但这并不适用于所有浏览器 如何强制下载文件
  • 悬停时停止 jQuery 循环功能

    我有一个函数叫做testimonials 它基本上循环遍历一组 div 而它对一个 div 进行动画处理 将其动画处理出来 然后将下一个 div 进行动画处理 现在 我想让它在鼠标位于当前 DIV 上时停止在当前 DIV 上 也称为悬停它
  • 无法安装任何NPM包,错误4058

    我正在尝试在我的项目上安装 Grunt 它曾经完美地工作 但现在由于某种原因 它不能工作 每次我尝试安装 Grunt 时 都会收到此错误 npm ERR path C irrelevent path project node modules
  • 加速 Java

    这确实是两个问题 但它们非常相似 为了简单起见 我想我应该把它们放在一起 Firstly 给定一个已建立的 Java 项目 除了简单的代码优化之外 还有哪些不错的方法可以加速它 Secondly 用Java从头开始编写程序时 有哪些好的方法
  • 使用 go 结构进行 ASN.1 解组会出现标签不匹配错误

    我正在尝试对以下定义执行 ASN 1 marshal unmarshal 操作 ACEI SEQUENCE message MessageFields neRegNumber OCTET STRING OPTIONAL gpsInfo Gp
  • Python 相当于 find -exec

    我正在尝试在 Popen 中运行此 BASH 命令 find tmp mount type f name rpmsave exec rm f 但每次我得到 查找 stderr 中缺少 exec n 的参数 与此等效的 python 是什么
  • 结构对齐和类型重新解释

    假设我有两种类型 A 和 B 然后我做这个类型 struct Pair A a B b 现在我有一个这样的功能 void function Pair pair 让我们假设function只会使用a该对的一部分 那么这样使用和调用函数是不是未
  • 压缩列表中具有奇数和偶数索引的元素

    我想将偶数和奇数元素压缩到列表中以生成对列表 如下所示 A B C D E F gt A B C D E F 以优雅的功能方式做到这一点的最简洁的表达方式是什么 在 2 8 中 您可能会使用以下方法 scala gt val a ABCDE
  • 无法配置数据源:未指定“url”属性,无法配置嵌入数据源。春天

    我已经检查了所有类似的问题 每个答案都说我需要指定我已经这样做的 driverClassName 这是我的 application yml spring application name cibus backend datasource d
  • Tensorflow:variable_scope 值错误

    这是我的代码如下 Tensorflow LSTM classification of 16x30 images from future import print function import tensorflow as tf from t
  • Microsoft 不推荐的实体框架自我跟踪实体

    在查看微软的网站时 我发现他们不再推荐使用自我跟踪实体 下面的每个链接都是 MS 资源 其中提到不要使用 STE 显示实体框架团队可用的模板 EF 设计器代码生成模板 http msdn microsoft com en US data J
  • 无法在 Spring Web 服务中反序列化 START_ARRAY 令牌之外的对象实例

    我目前在 Android 上连接到我的网络服务时遇到问题 我使用 jackson core databind annotation 2 2 4 和 Spring RESTWebService 如果我从浏览器访问 URL 我可以看到 JSON
  • 为什么(begin)在Scheme中有效?

    我在 Racket 和 Chez Scheme 中进行了测试 发现 begin 是可以接受的 同时 define a begin 不是 例如我得到的球拍 gt begin gt define a begin stdin 56 10 begi
  • 使用具有自定义连接对象的 EF 存储库?

    我被困在 EF 6 中 而且文档很少 现在一天都没有解决这个问题 我尝试在我们拥有的数据库存储库上使用 Code First 由于复杂的初始化我must使用我自己的工厂方法来初始化上下文子类 我must放入我自己的 sql 连接 或者创建我
  • 冒充标准用户

    我正在尝试创建一个正在运行的进程 该进程被提升为使用标准用户令牌重新启动资源管理器 我所做的是首先以管理员身份运行主进程 然后拍摄运行的快照 if Process32First hSnapshot pe32 do if wcsicmp pe