冒充标准用户

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(使用前将#替换为@)

冒充标准用户 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 自定义波特率,redux

    我遇到的问题详述如下自定义波特率 https stackoverflow com questions 7714060 custom baud rate SetCommState 波特率 921600 失败 但波特率 115200 成功 尽管
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 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