如何以另一个用户(la /netonly)身份启动 Internet Explorer 进程?

2023-12-12

我正在尝试从我们的 WPF 应用程序中以另一个用户身份启动 Internet Explorer,以便当我们的用户访问(内部)网站时,他们会通过集成 Windows 身份验证进行静默身份验证。

我们不想以其他用户身份启动 iexplore.exe,因为当您首次在计算机上启动进程并首次尝试设置 IE7/8 时,会出现奇怪的部署/环境问题。不过,如果您有一个解决方案如何将每台计算机上的每个 IE 安装程序静音,我很想听听。

回到我本来想问的问题。我可以使用命令提示符获得我想要的确切 IE 模拟行为*runas(谢谢https://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

c:\> runas /noprofile /netonly /user:MyDomain\MyUser iexplore.exe

*注意:我不能使用runas对于我们的 WPF 应用程序来说,原因有很多,但是最终结果就是我想要的。

不管怎样,我想要 C# 的等效代码runas /noprofile /netonly iexplore.exe.

我已经在 P/Invoke 开启的情况下完成了一半CreateProcessWithLogonW。这就是我所拥有的:

uint LOGON_NETCREDENTIALS_ONLY = 2;
var lpStartupInfo = new CreateProcessWithLogonW_PInvoke.STARTUPINFO();
CreateProcessWithLogonW_PInvoke.PROCESS_INFORMATION processInformation;

CreateProcessWithLogonW_PInvoke.CreateProcessWithLogonW(
                userName,
                domain,
                pw,
                LOGON_NETCREDENTIALS_ONLY,
                null,
                commandLine,
                0,
                null,
                null,
                ref lpStartupInfo,
                out processInformation);

这成功启动了 Internet Explorer,但似乎根本没有模拟用户。我可以通过 runas 命令模拟用户,所以我 98% 确定身份验证失败不是 IE/zone/password/IIS 设置,这只是我在调用时没有正确执行的操作CreateProcessWithLogonW().

我注意到的一件事是runas /netonly仅当我添加以下命令时,该命令才有效/noprofile开关,这是困扰我的事情。我不知道如何通过 C# 中的 P/Invoke 设置此开关的等效项。

对于任一解决方案(解决“IE 第一次启动时运行向导”,或找到我缺少的怪异 P/Invoke 设置),我们都表示感谢。


好吧,我非常非常接近。神奇的修复是添加-noframemerging到 iexplore.exe 调用,这......老实说我不确定它的作用,它使用短语“进程框架”,这很棒,也许对你来说意味着一些东西。

无论如何,这似乎已得到解决。

var arguments = "-noframemerging " + url;
var pathToIExploreExe = GetFullPathToIExploreExe();
var commandLine = string.Format("\"{0}\" {1}", pathToIExploreExe, arguments);

uint LOGON_NETCREDENTIALS_ONLY = 2;
var lpStartupInfo = new CreateProcessWithLogonW_PInvoke.STARTUPINFO();
CreateProcessWithLogonW_PInvoke.PROCESS_INFORMATION processInformation;

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

如何以另一个用户(la /netonly)身份启动 Internet Explorer 进程? 的相关文章

  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

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

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 如何在 WCF 客户端中提供用户名和客户端证书(为什么此示例有效)?

    考虑一个 WCF 服务 其目的是让传输层需要客户端证书 客户端证书在 IIS 中设置为 必需 同样 消息层也会有用户名认证 现在我已经看到这个问题了 禁止 WCF 客户端证书和用户名凭据 我可以在某种程度上理解那里发生的事情 并意识到 WC
  • Serilog HTTP接收器+Logstash:将Serilog消息数组拆分为单独的日志事件

    我们正在使用Serilog HTTP 接收器将消息发送到 Logstash 但是HTTP消息体是这样的 events Timestamp 2016 11 03T00 09 11 4899425 01 00 Level Debug Messa
  • 文件对象的初始化

    我想问一下java中初始化的格式 我目前所知道的是 int a 1 double b 1 0 String c java etc 现在 在主类中我想初始化一个File 我不知道该怎么做 首先 文件是一种对象类型 与原始类型 int 和 do
  • Windows Phone 7 中的网格

    我有一个网格视图代码 下面有分为3列 但我的代码有一个问题 什么时候多重数据被检索到 第 3 列中的所有数据都是重叠的 我如何修改下面的代码 例如它会在下面依次显示 Define grid column size Grid schedule
  • sqlite3 中的列详细信息

    在 SQLITE 数据库中 如果我需要表元详细信息 我可以运行以下命令 C sqlite gt sqlite3 exe sqlite2 db SQLite version 3 7 15 2012 12 12 13 36 53 Enter h
  • 使用最多两位小数的 double

    我想使用双精度 最多只有小数点后两位 即 它将存储最多 2 个小数位 如果比较两个 double 值 则比较应仅基于前 2 个小数位 如何实现这样的事情呢 我的意思是存储 比较 一切都将仅基于小数点后两位 剩下的地方可能不同 大于 小于 无
  • 获取小数点后十二位的纬度和经度

    我有一个应用程序 我必须从纬度和经度获取用户的当前位置 对于这两个值 我必须得到小数点后 12 位 这是用于获取用户位置的 GPS 跟踪器类 public class GPSTracker extends Service implement
  • java.lang.NoClassDefFoundError:com.google.android.gms.gcm.GoogleCloudMessaging

    我正在使用开发 GCM 示例应用程序http javapapers com android google cloud messaging gcm for android and push notifications comment 1037
  • 删除查询字符串“?” HTML 形式的方法 GET

    我有一个在新窗口中打开的简单的 Google 图片搜索表单 当我想将表单参数更改为 Unsplash 在 URL 搜索中不使用查询字符串 时 表单继续发送查询字符串 HTML
  • TYPO3 Ajax 页面配置

    如何从 TYPO3 中的 Ajax 页面删除 CSS 样式的 conted 标头输出 这是我的打字稿 ajax PAGE ajax typeNum 1234 this solution is working but then I don t
  • 使用 http.request 获取 Node.js 中的二进制内容

    我想从 https 请求中检索二进制数据 我找到了一个类似的问题使用请求方法 使用 request 获取 Node js 中的二进制内容 是说设置encoding to null应该有效 但事实并非如此 options hostname u
  • 在 ggplot2 中,在顶部绘制反转 y 轴和 x 轴的图

    我想得到ggplot2绘制顶部带有反转 y 轴和 x 轴的图 我用了scale y reverse 获得反向 y 轴 但无法弄清楚如何将 x 轴放在顶部而不是底部 dfn lt read table header T text supp d
  • Matplotlib 对数刻度刻度标签,乳胶字体中的减号太长

    我在 matplotib 中使用 text usetex True 这对于具有线性比例的图来说非常有用 然而 对于对数刻度 y 刻度如下所示 指数中的负号占用了绘图中的大量水平空间 这不太好 我希望它看起来像这样 该字体来自 gnuplot
  • 日期时间转 JavaScript 日期

    Stackoverflow 上的另一个答案是从 Javascript 日期到 net DateTime 的转换 long msSinceEpoch 1260402952906 Value from Date getTime in JavaS
  • 在球体上使用多个纹理 [Three.js]

    是否可以在球体上加载多个纹理 我的意思是说有什么办法Three js将球体分割成n碎片 单独纹理它们并再次将这些碎片渲染为整个球体 我不想在球体上加载整个纹理 而是只渲染用户首先在屏幕上看到的那些部分 并且当用户旋转球体时 必须加载纹理的其
  • 在边框中间剪开

    我试图实现悬停时看起来像图像的边框 我不知道如何描述边界 但有什么方法可以实现这一点吗 text width 100px height 20px text align center text hover border 1px solid b
  • Blazor 中的轮询线程

    我正在使用 REST API 和 Web 界面构建 Blazor 应用程序 我还将有一个应用程序的监视部分 它将每秒从许多不同的数据源轮询数据 我在一个单独的类中创建了一个长时间运行的线程 它只是轮询我想要的数据 并且似乎工作正常 我使用的
  • 如何检查字典是否为空?

    我正在尝试检查字典是否为空 但它的行为不正常 它只是跳过并显示ONLINE除了显示消息之外没有任何其他内容 有什么想法吗 def isEmpty self dictionary for element in dictionary if el
  • iPod Touch 上的飞行模式——重新审视

    情况是这样的 我们有一个记录声音的应用程序 如果应用程序在第二代 iPod Touch 上运行且飞行模式关闭 则由于 iPod 的 WIFI 活动 录音中会出现周期性噪音 因此 我想检测我们是否正在第二代 iPod Touch 上运行 我知
  • 如何以另一个用户(la /netonly)身份启动 Internet Explorer 进程?

    我正在尝试从我们的 WPF 应用程序中以另一个用户身份启动 Internet Explorer 以便当我们的用户访问 内部 网站时 他们会通过集成 Windows 身份验证进行静默身份验证 我们不想以其他用户身份启动 iexplore ex