问题标签 [createprocessasuser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
226 浏览

windows - 为什么 CreateProcessAsUser 因“当该文件已存在时无法创建文件”而失败?

我正在尝试使用 CreateProcessAsUser 在服务的用户会话中创建客户端进程。但是当我用 VS 2010 调试它时,CreateProcessAsUser 失败并且错误代码是 0,错误消息是

当该文件已存在时无法创建该文件

如果我分发它并与安装程序一起安装,则 CreateProcessAsUser 似乎偶尔会因此错误而失败。我很好奇它试图写入什么文件。

就我个人而言,我不认为是客户试图写一些东西。由于 CreateProcessAsUser 只是启动进程并对其进行初始化,然后返回。

我确实使用与安装程序不同的方式来安装服务。会是这个原因吗?

这是代码

0 投票
1 回答
113 浏览

c# - 以完整的权限和环境启动流程

我有一个在 LocalSystem 以外的用户帐户下运行的 Windows 服务,让我们假设用户mydomain\svcUser

该服务使用Process.Start(...)生成一个新进程P。进程 P 使用用户mydomain\procUser下定义的默认 Outlook 配置文件。工作正常。

现在,我需要在一个新用户下生成相同的进程P : mydomain\procUser基本上具有与mydomain\svcUser相同的权限。

在使用 LogonUser 获取令牌后,我尝试以多种方式使用 CreateProcessAsUser,但它不起作用。

现在,如果我将我的进程的登录用户更改为mydomain\procUser,那么生成的进程P拥有所有必需的权限和环境内容以正常工作。

对于如何组合要传递给 LogonUser 和 CreateProcessAsUser 的参数,我非常迷茫,这样我就可以让服务在mydomain\svcUser下运行,但生成的进程P在mydomain\procUser下正常工作。

这个链接很有帮助,但它只是一篇很棒的指南文章,成功取决于在调用LogonUserCreateProcessAsUser时如何使用标志和其他东西。

0 投票
1 回答
1444 浏览

c++ - CreateProcessAsUser - 创建具有不同父进程的进程?

我在 MSDN 上阅读了有关 UAC 的实施: http ://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx

偶然发现了这条有趣的路线:

尽管 AIS 在技术上是提升进程的父进程,但 AIS 使用 CreateProcessAsUser API 中的新支持,将进程的父进程 ID 设置为最初启动它的进程的 ID(参见图 13)。

这是 CreateProcessAsUser 的 MSDN 页面:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429(v=vs.85).aspx

应用程序说我们可以通过使用 API 中的选项创建一个进程并设置不同的父进程。我不知道该怎么做?我需要挖掘令牌吗?

0 投票
1 回答
394 浏览

redirect - 从 createprocessasuser 将输出重定向到文件

我创建了一个 Windows 服务,它从我提供的地址下载文件,然后使用 createprocessasuser函数执行,一切正常,直到我尝试将输出重定向到文件

我看到程序的新窗口正在运行,其中没有任何内容,但日志文件中也没有任何内容..

这是我的代码:

当我在没有重定向的情况下运行它时,它工作正常,当我在不同的程序上运行此代码并使用createprocess它时,它也适用于重定向,但是当我使用createprocessasuser(因为它从 win 服务运行)时,日志文件中没有任何内容. 有任何想法吗?

0 投票
2 回答
3068 浏览

windows - CreateProcessWithLogonW 错误 1783:存根收到错误数据

我有这个测试代码:

在我朋友的电脑上,它总是可以正常工作。在我的电脑上它有时可以工作!只有有时,大多数时候它会产生 1783 错误。我试图在我的电脑上删除一些服务,但这没有帮助。我需要该代码可以在许多其他 PC 上运行,因此我需要了解为什么会出现此错误以及如何修复它。

0 投票
1 回答
562 浏览

c# - 将 createprocessasuser 的标准输出重定向到管道在读取时挂起

我正在使用 CreateProcessAsUser 从服务运行进程,并将标准输出重定向到命名管道。但是当我尝试从命名管道中读取时,它会挂在读取上并且永远不会返回。我在一个单独的任务中尝试了这个(目前在下面实现)并在主进程中读取它。我还尝试使用 C# AnonymousPipeServerStream 类(请参阅下面注释掉的代码),但有相同的挂起。

有什么我想念的想法吗?谢谢!

0 投票
1 回答
2474 浏览

c# - 从 C# 中的 CreateProcessAsUser 捕获标准输出

我目前正在使用 pinvoke CreateProcessAsUser api 在 asp.net 网站中启动进程。这可以完美地模拟登录的 AD 用户。

但是不知何故,控制台输出的结果字符串始终为空。我找不到出了什么问题。没有崩溃或任何东西只是没有输出。

0 投票
0 回答
731 浏览

c# - 如何使用带有扩展属性的 CreateProcessWithLogonW (STARTUPINFOEX)

我真的希望能够通过共享管道进行文件重定向,并将继承的句柄列表过滤为仅那些 stdout/stderr/stdin 句柄,据我所知,STARTUPINFOEX 和扩展属性是这样做的方法。我还需要能够以其他用户身份启动。

  • CreateProcess 在使用 STARTUPINFOEX 时为我工作,并且要么不传递任何属性,要么传递单个属性(要么更改父级,要么过滤继承的句柄)。
  • CreateProcessWithLogonW 在使用 STARTUPINFOEX 时有效,但前提是我从创建标志中删除 EXTENDED_STARTUPINFO_PRESENT(基本上将 STARTUPINFOEX 视为 STARTUPINFO,即使 startupinfo.cb 是完整结构)。
  • 如果我添加 EXTENDED_STARTUPINFO_PRESENT,我会得到有用的“参数不正确”,即使不使用任何属性(适用于 CreateProcess)

以下内容有效,直到您取消注释 // | NativeMethods.EXTENDED_STARTUPINFO_PRESENT,

Edit.1 在过滤的句柄属性列表中发送,以防合同差异需要扩展属性不是 IntPtr.Zero。还是失败了。同样,在 CreateProcess 中工作,在 CreateProcessWithLogonW 中使用这些新信号失败:

0 投票
0 回答
1298 浏览

c++ - 来自本地系统管理员的 CreateProcessAsUser 不应用 Windows 样式

我在使用来自本地系统管理员的 Windows API CreateProcessAsUser 的应用程序中遇到问题,以便以其他用户身份运行应用程序。到目前为止一切正常,但 Windows 窗口和框架样式并未以某种方式应用。该窗口总是看起来像带有大框架的 Windows 2000 窗口。我还附上了一些截图

破碎的风格窗口

我还编写了一些示例代码,说明我们如何在不处理句柄和其他东西的情况下使用 C++ 实现所有魔法。

只需确保您在本地设置了密码“test”的用户“test”,并尝试以本地系统管理员身份运行发布的源代码。如果您尝试执行代码,其他用户将导致错误代码 1413。

该问题主要出现在 VirtualBox 中的 Windows 7 VM、某些 Windows 7 系统和所有 Windows 8.1 系统上。很奇怪。谁能帮我解决这个问题?谢谢!

0 投票
0 回答
209 浏览

c++ - 无法加载包含对 CreateProcessAsUserW 的调用的 dll

我有一个加载 dll 的程序,所有 dll 只有一个简单的 c 函数“运行”。一个 dll 包含对 CreateProcessAsUserW 的调用,当我尝试加载它时,LoadLibrary 报告错误 127“ERROR_PROC_NOT_FOUND”。当我将其注释掉时,dll 正常加载并且可以调用。我在这个 dll 上运行依赖 walker 并且 CreateProcessAsUserW 被标记为红色并带有错误:

使用 CreateProcessAsUserA 时不会出现此问题,只有在使用 CreateProcessAsUserW 时才会出现此问题。

我也关闭了静态库和静态运行时

我的问题的根源是什么?我该如何解决这个问题,以便 CreateProcessAsUserW 可以工作?