問題タブ [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 投票する
1 に答える
2304 参照

vb.net - CreateProcessAsUser のパラメーターに関する問題

私は、VB.NET 2005 を使用して、現在の対話型ユーザーにプロセスを起動できる Windows サービスを構築するように割り当てられました。

いくつかの調査の後、次のコードを作成しました。

しかし、CreateProcessAsUser を呼び出すと、エラー 87 (ERROR_INVALID_PARAMETER) が発生します。誰かが私が間違っていることを指摘できますか?

コードは、LocalSystem アカウントで実行される Windows サービスとして実装されます。

0 投票する
1 に答える
7921 参照

winapi - why is CreateProcessWithTokenW failing with ERROR_ACCESS_DENIED

I have a call to CreateProcessWithTokenW that is failing with access denied. Any ideas how to debug this?

The call to CreateProcessWithTokenW is here: https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/ProcessUtil.cs

For now I'm using a access token for the current process, eventually I'll use a token from another user. For now then I'm using https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/AccessToken.cs to get the access token.

If you want to debug, pull down the sourcecode and run build_and_test.ps1. The error stack is:

Later update: I saw in some docs that additional privileges are needed (http://msdn.microsoft.com/en-us/library/aa374905%28v=vs.85%29.aspx). I am having trouble getting tests to verify I have these individual securities (they are set in secpol.msc pre-reboot)

These tests keep telling me I don't have the permissions I've set in the UI, https://github.com/fschwiet/PShochu/blob/master/PShochu.Tests/verify_privileges.cs

0 投票する
2 に答える
608 参照

c++ - getenvでCreateProcessAsUserを呼び出すC++LPTSTRの問題

関数CreateProcessAsUserを呼び出そうとしています。定数文字列を渡すことは問題ありません。char * getenv(const char name)を使用して環境変数を取得しようとすると、問題が発生します。

以下を使用すると、notepad.exeが実行されます。

ただし、以下を使用すると何も実行されません。

getenvと(LPTSTR)を正しく指定しましたか?

c:\\ windows \\ notepad.exeとc:\ windows\notepad.exeを含むユーザー環境変数とシステム環境変数を使用してみました。

ありがとう!

0 投票する
2 に答える
8950 参照

c# - システム Windows ユーザー アカウントで実行されているコンソール アプリを起動する方法を教えてください。

私は試した

しかし、それは得ます

Win32Exception が処理されませんでした

ログインに失敗しました: 不明なユーザー名または間違ったパスワード

私は使用する必要がありますCreateProcessAsUserか?そのメソッドに渡す適切なパラメーターを取得するにはどうすればよいですか?

0 投票する
1 に答える
101 参照

c# - Windows サービスのほとんど役に立たない

(C#、.net Framework 2.0 が望ましい)

こんにちは。

これは実用的かつ技術的な質問です...警告されています。:)

各ユーザーがオンライン サービスにログインする必要がある Windows サービスがあります。2 人のユーザー a と b がいるとします。

a はインストール プロセスを実行し、最後にオンライン サービスのログイン資格情報を要求します。それをローカルに保存して、サービスの開始時にユーザーを認識します。

b がやって来て、ログオフし、a がログオンします。このサービスは、新しいユーザーに気づき、ログインの詳細があるかどうかを確認し、ないことを確認します。

Process.Start を使用して Windows アプリを起動できると思いました。いいえ。だから私はググって、たくさんのコード(ここでは CreateProcessAsUser として示されている)を書くとそれは可能ですが、これを行うことはお勧めしません。

それで...どうすればいいですか?技術的または実用的なソリューションに満足しています。

0 投票する
2 に答える
25143 参照

windows - コード例: サービスは CreateProcessAsUser() を呼び出します セッション 0 ではなく、ユーザーのセッションでプロセスを実行したい

サンプルコードを探しています:

サービスが CreateProcessAsUser() を呼び出す場合、セッション 0 ではなく、ユーザーのセッションでプロセスを実行したい

これまでのところ、作成されたプロセスはセッション 0 のサービスのようにのみ実行されています

0 投票する
0 に答える
1480 参照

windows - サービスからではない CreateProcessAsUser

別のユーザー アカウントの (昇格されていない) 資格情報で、そのユーザーが既にログインしている間にアプリケーションを実行したいと考えています。具体的には、アプリケーションのインストーラー (任意の管理者アカウントで実行される) が、ログインしている各ユーザーのデスクトップ セッションにプロセスを生成するようにします。これらのプロセスはサービスと通信し、ユーザーが操作できるようにデスクトップにウィンドウを表示します。

通常、 として実行されているサービスからLocalSystemのアプローチはWTSQueryUserToken->CreateProcessAsUserです。ただし、アカウントWTSQueryUserTokenの外部で(特権を使用して) 実行されないため、ここではそのアプローチは失敗します。LocalSystemSE_TCB_NAME

ユーザーがまだログインしていない場合は、アプリケーションを で実行するように登録するだけで、ログインしているHKLM\...\Runユーザーはログイン時にアプリケーションのコピーを取得できます。しかし、ユーザーが既にログインしている場合は、どちらも機能しません (少なくとも、ログアウトして再度ログインするまでは機能しません)。

考えられる答えは 2 つあります。

  1. これはできません。ごめん。

  2. 別の場所からトークンを取得し (おそらく、explorer.exe プロセスを列挙し、それぞれからアクセス トークンを取得しますか?)、 を呼び出しDuplicateTokenExて、 に渡しCreateProcessAsUserます。このアプローチを試してみたところ、OpenProcessToken別のユーザー セッションで実行中のプロセスを実行しようとすると、デバッグ権限が有効になっており、プロセスがPROCESS_ALL_ACCESS.

どう思いますか?

答えが #1 (「これを行うことはできません」) の場合、昇格されていないプロセスを生成してサービスとユーザーの間を仲介するための推奨されるベスト プラクティスは何ですか? サービスが CreateProcessAsUser を介してこれらのプロセスを各セッションに生成するのがベスト プラクティスですか? または、昇格されていないプロセスを個別に実行するのがベスト プラクティスですか (たとえば、HKLM\...\Runまたはを介し​​てHKCU\...\Run)?

0 投票する
0 に答える
498 参照

winapi - Windows 7 で 7 回の呼び出し後に CreateProcessAsUser が失敗する

私のサービスは、CreateProcessAsUser を使用して、ターゲット マシン上の各コアのプロセスを生成します。このプロセスは、GUI コントロールではなくコマンドライン パラメータを使用して実行するように変更された MFC プログラムです。XP以降、このシナリオでは正常に実行されています。8 コアと 12 コアの WIN7 x64 を実行している 2 つの新しいマシンがありますが、両方のマシンで 7 つのプロセスが作成され、正常に実行されますが、8 番目のプロセスが開始されて終了します。プロセスは、終了コードなしで MFC LoadFrame 呼び出しで終了します。

コマンドラインから実行できるようにサービスを作成しました.CreateProcessAsUserで使用するのと同じユーザーとしてコマンドラインから実行すると、8番目、9番目、10番目などのプロセスを正常に開始して実行できます。ご想像のとおり、7 を開始すると、CreateProcessAsUser を「かなり」正しく呼び出していると思います。LoadFrame での失敗は、Windows ステーションまたはデスクトップの問題を示唆しています。何か案は?

0 投票する
1 に答える
2300 参照

windows - Win7 ログオン画面でアプリケーションを実行する

サービスから Windows 7 のログオン画面でアプリケーションを実行したいと考えています。

私はこれについて長い間調査を行っており、すでにさまざまな方法を試していますが、残念ながらこれまでのところ完全に成功していません. 現在ログオンしているユーザーのロック画面でアプリケーションを実行することができました。しかし、その後、ユーザーごとに異なるログオン画面と一般的な (ユーザーに依存しない) ログオン画面があることに気付きました。

私の推測では、このユーザーに依存しないログオン画面 (複数のアカウントが利用可能な場合、またはロック画面で「ユーザーの切り替え」をクリックしたときに起動した直後に表示される) はセッション 0 で実行され、ユーザー 1 はセッション 1 で実行され、ユーザー 2 はセッションで実行されます。 2など。問題は、セッション 0 (「winsta0\winlogon」を使用) でアプリケーションを実行すると、アプリケーションが表示されないことです。セッション 1 での実行は問題なく動作しますが、そのためにはユーザーがすでにログインしている必要があるため、あまり役に立ちません。

では、ユーザーに依存しないログオン/ウェルカム画面でアプリケーションを実行するにはどうすればよいでしょうか? この目的のための正しいパラメータと関数は何ですか? 誰かがデモンストレーションのための実例を持っていますか? (Delphi が推奨されますが、実際には他の言語でも同様です!)

0 投票する
0 に答える
475 参照

rest - 委任を使用してWebサービスからCreateProcessAsUserを介して作成された後続のプロセスは、ネットワーク共有に対して読み取り/書き込みできません

ネットワーク共有にアクセスしようとしたときに、委任を使用してWebサービスからCreateProcessAsUserを介して作成された連続するプロセスで、System.UnauthorizedAccessException例外が発生する原因は何でしょうか。

WCF Rest Webサービスは、複製されたユーザートークンでCreateProcessAsUserを使用して新しいプロセスを開始します。プロセスが開始され、共有へのアクセス権を持つ偽装されたユーザーが所有していることが報告されます。

Webサーバーのクリーンブート時に、プロセスはSystem.IO.Directory.Existsをネットワーク共有ディレクトリ(\\ nasshare \ test)で何度も呼び出し、正しい応答を取得できます。ただし、プロセスが終了し、プロセスを再開するためにWebサービスへの別の呼び出しが行われると、ディレクトリが存在しなくなったことが報告され、プログラムコードは、おそらく欠落しているdirを作成しようとし、例外メッセージSystemで失敗します。 UnauthorizedAccessException:パス'\\ nasshare\test'へのアクセスが拒否されました。

奇妙なことに、Webサーバーを再起動すると、プロセスが終了するまで再び機能します。Webサービスによって作成された後続のプロセスは失敗します。Webサーバーのコマンドプロンプトからプロセスを実行すると、プロセスはフォルダーを確認して書き込むことができます。この方法でプロセスを何度も実行でき、Webサーバー内でCreateProcessAsUserを使用して起動すると、失敗した直後でも正常に機能します。

  • Webサーバー:Windows Server 2008 R2
  • ネットワーク共有:Windows Storage Server 2003
  • Webサービスホスティング:IIS7
  • Webサービスクライアント:IE、Chrome
  • アプリケーションプールID:NetworkService
  • .Net Framework:v4.0

簡略化されたRESTWebサービス

test.exeプログラムコードの簡略化した例