问题标签 [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 回答
1345 浏览

c# - CreateProcessAsUser 的重定向输出

我最近实现了CreateProcessAsUser。我一直在尝试将输出结果重定向或通过管道传输到文件。首选流式传输。我试过这个没有运气

更新

要求是:

  • Windows 服务应用程序
  • 以系统帐户登录
  • CreateProcessAsUser 冒充为提升的用户

代码:

0 投票
1 回答
1028 浏览

delphi - CreateProcessAsUser 成功,但是没有创建进程

我们有一个服务应用程序,它在控制台会话 (WTSGetActiveConsoleSessionId) 中生成一个进程,以允许以桌面控件样式访问机器。这在大多数情况下都很有效,但是就 CreateProcessAsUser 的结果而言,有些 VM 似乎成功地创建了进程,但是没有创建进程。

该服务在 LocalSystem 帐户下运行。正在启动的进程尚未运行。没有病毒防护程序正在运行。我们只在 Windows Server 2008 R2 上看到过这种行为(但这并不是说它是唯一的)。

我们使用的代码如下:

有谁知道它为什么会失败,或者是否有办法通过这个调用来解决 API 中发生的事情?

0 投票
2 回答
581 浏览

windows - CreateProcessAsUser 失败并出现 1349 :令牌的类型不适合其尝试使用

使用创建令牌OpenThreadToken()然后将其传递给CreateProcessAsUser失败:

1349:令牌的类型不适合其尝试使用。

它在一台机器上成功,但在其他 win2008r2 上失败。

DesiredAccess传递给的OpenThreadToken是: TOKEN_QUERY|TOKEN_IMPERSONATE|TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY

0 投票
1 回答
746 浏览

delphi - 我的应用程序进入服务会话(而不是控制台)

我编写了一个服务并希望从中运行一个应用程序(带有 GUI)。所以我写了一个如下的程序。我的应用程序启动但仍在服务会话中!所以我看不到它的GUI。
请提供任何帮助。

0 投票
1 回答
612 浏览

windows - GetLastError()函数返回的错误值0x16f是什么意思

当我调用函数CreateProcessAsUser()时,它返回失败。
然后GetLastError()检查错误发生原因的调用返回值 0x16f。

我无法找出错误应该是什么意思。

0 投票
1 回答
548 浏览

windows-services - 来自 Windows 服务的 CreateProcessAsUser,WTSQueryUserToken 函数返回 false

我正在尝试创建一个 wpf 应用程序的进程。在 Visual Studio 调试模式下,它运行完美,但 windows 服务无法使用 gui 创建它。

我将 CreateProcessAsUser() 与 WTSQueryUserToken()、DuplicateTokenEx() 一起使用。

但是 WTSQueryUserToken() 返回错误的特权原因,我无法运行我的应用程序。

我已经搜索过类似的问题,但我找不到解决问题的方法。

0 投票
1 回答
446 浏览

vb.net - vb.net CLR/SHIM 错误:无法启动此应用程序。--> 找不到要使用的运行时版本

出现意外的“无法启动此应用程序”弹出错误,提示 .NET CLR 中出现 SHIM_NOVERSION_FOUND 错误。这是发生了什么...

我有两个 vb.net 应用程序:

1- MyApp.exe -- Windows 窗体应用程序
2- Launcher.exe -- Windows 服务

两者都是 .NET 框架 4.5 应用程序,Launcher.exe 嵌入在 MyApp.exe 中。两者都针对 AnyCPU 进行了配置,并且都不使用 app.config 文件。原因是交付工具只能交付单个文件,所以我不能包含任何额外内容。可执行文件必须是自包含的,并且不能嵌入 app.config 文件。

执行在以下层中运行:

第 1 层:交付工具

  • 本机 C++ 应用程序
  • 提升,作为本地系统帐户运行

第 2 层:MyApp.exe

  • .NET 4.5 应用程序
  • 提升,作为本地系统帐户运行
  • 它运行良好,并将 Launcher.exe 作为新的 Windows 服务安装。

第 3 层:Launcher.exe

  • .NET 4.5 Windows 服务
  • 提升,作为本地系统帐户运行
  • 使用 Windows API 调用来启用以下权限:SE_INCREASE_QUOTA_NAME、SE_ASSIGNPRIMARYTOKEN_NAME、SE_TCB_NAME
  • 总之,它使用提升的权限来搜索 Explorer.exe 进程,打开它们,复制用户的安全令牌,并使用用户的令牌调用 CreateProcessAsUser() API,以便启动 MyApp.exe 的第二个副本,运行在用户的桌面上。

第 4 层:MyApp.exe

  • .NET 4.5 应用程序
  • 无法启动并出现弹出错误 --> 无法启动此应用程序。
  • 它是 MyApp.exe 的副本,与第 2 层相同。

我启用了 .NET CLR 调试来比较 MyApp.exe 在第 2 层和第 4 层的加载:

第二层:
6172,1589.119,解析配置文件:C:...\MyApp.exe.config
6172,1589.119,配置文件(打开)。结果:80070002
6172,1589.119,UseLegacyV2RuntimeActivationPolicy 设置为 0
6172,1589.119,LegacyFunctionCall:GetFileVersion。文件名:C:...\MyApp.exe
6172,1589.119,LegacyFunctionCall:GetFileVersion。文件名:C:...\MyApp.exe
6172,1589.119,C:...\MyApp.exe 构建版本:v4.0.30319
6172,1589.166,运行时决定:v4.0.30319

第4层:
6552,1594.704,解析配置文件:C:\windows\TEMP\MyApp.exe.config
6552,1594.704,配置文件(打开)。结果:80070002
6552,1594.704,UseLegacyV2RuntimeActivationPolicy 设置为 0
6552,1594.704,LegacyFunctionCall:GetFileVersion。文件名:C:\windows\TEMP\MyApp.exe


6552,1594.704,错误:找不到要使用的运行时版本。
6552,1594.704,SEM_FAILCRITICALERRORS 设置为 5
6552,1688.055,FunctionCall: RealDllMain。原因:0
6552,1688.055,函数调用:OnShimDllMainCalled。原因:0

随机事实:

  • 这不会发生在所有目标计算机上。
  • 禁用防病毒软件无法在受影响的系统上解决。
  • 在某些计算机上,错误只发生一次,后续执行不会重现弹出错误。

寻求任何帮助以了解或调试为什么 .NET CLR 无法确定要使用的运行时版本,而同一应用程序已经成功启动!

0 投票
0 回答
126 浏览

winapi - 进程所有者无法杀死由 CreateProcessAsUser API 创建的进程

我有一个以本地系统帐户启动的 Windows 服务。在此服务中,它使用 CreateProcessAsUser API 使用user1 account 创建一个新进程。进程创建后:

  1. 以Administrator身份登录系统,我可以发现该进程的所有者是user1,我可以停止/恢复/杀死该进程。

  2. 以user1身份登录系统,但我无法停止/恢复/终止该进程,并且出现“拒绝访问”错误。为什么?

这是我的测试代码:

有人可以帮助我吗?非常感谢。

0 投票
1 回答
915 浏览

c# - 从 Windows C# 服务运行用户进程 cmd.exe

我正在构建一个 Windows 服务。它需要使用当前用户权限运行命令并删除所有存储的与子字符串匹配的凭据 - 例如“MYSTRING”。

我已经在CreateProcessAsUser方法中调用了其他模块,它确实有效。但是,调用 cmd.exe 模块并传递复杂的命令似乎很棘手。

我可能缺少一些转义字符或一些额外的命令行参数,导致复杂的命令无法成功运行。如果我调用我的服务,我可以看到 cmd 提示符正在启动,但它不执行命令。

我确实尝试解决它。我直接在命令 cmd 提示符下测试过,效果很好。

以下是示例:

直接从 cmd 提示符:

通过以下命令执行相同的命令失败run box

我尝试添加双引号,转义特殊字符,但不知何故它不起作用。下面是这样的例子。

在此先感谢您的帮助。

编辑:

根据 tukan 的输入,我能够从运行框运行命令。但是,当我在 C# 代码中尝试相同的操作时,它会在命令提示符中引发错误。

命令提示符错误(由服务创建的进程):

tokens = 1 * delims =: " 在这个时候是出乎意料的。

下面是 C# 方法。

0 投票
0 回答
46 浏览

user-interface - 如何正确启动带有 Windows 服务的 exe 文件(将弹出 GUI)

我在使用 Windows 服务启动 exe 文件时遇到问题。

我的服务将调用 MSDN 中的“CreateProcessasUser”函​​数,它会正确启动 exe 文件,但是启动的 exe 任务只显示在任务管理器中,但没有在桌面(GUI)上提示。有什么想法可以解决这个问题吗?

非常感谢!!!