問題タブ [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.
vb.net - CreateProcessAsUser のパラメーターに関する問題
私は、VB.NET 2005 を使用して、現在の対話型ユーザーにプロセスを起動できる Windows サービスを構築するように割り当てられました。
いくつかの調査の後、次のコードを作成しました。
しかし、CreateProcessAsUser を呼び出すと、エラー 87 (ERROR_INVALID_PARAMETER) が発生します。誰かが私が間違っていることを指摘できますか?
コードは、LocalSystem アカウントで実行される Windows サービスとして実装されます。
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
c++ - getenvでCreateProcessAsUserを呼び出すC++LPTSTRの問題
関数CreateProcessAsUserを呼び出そうとしています。定数文字列を渡すことは問題ありません。char * getenv(const char name)を使用して環境変数を取得しようとすると、問題が発生します。
以下を使用すると、notepad.exeが実行されます。
ただし、以下を使用すると何も実行されません。
getenvと(LPTSTR)を正しく指定しましたか?
c:\\ windows \\ notepad.exeとc:\ windows\notepad.exeを含むユーザー環境変数とシステム環境変数を使用してみました。
ありがとう!
c# - システム Windows ユーザー アカウントで実行されているコンソール アプリを起動する方法を教えてください。
私は試した
しかし、それは得ます
Win32Exception が処理されませんでした
ログインに失敗しました: 不明なユーザー名または間違ったパスワード
私は使用する必要がありますCreateProcessAsUser
か?そのメソッドに渡す適切なパラメーターを取得するにはどうすればよいですか?
c# - Windows サービスのほとんど役に立たない
(C#、.net Framework 2.0 が望ましい)
こんにちは。
これは実用的かつ技術的な質問です...警告されています。:)
各ユーザーがオンライン サービスにログインする必要がある Windows サービスがあります。2 人のユーザー a と b がいるとします。
a はインストール プロセスを実行し、最後にオンライン サービスのログイン資格情報を要求します。それをローカルに保存して、サービスの開始時にユーザーを認識します。
b がやって来て、ログオフし、a がログオンします。このサービスは、新しいユーザーに気づき、ログインの詳細があるかどうかを確認し、ないことを確認します。
Process.Start を使用して Windows アプリを起動できると思いました。いいえ。だから私はググって、たくさんのコード(ここでは CreateProcessAsUser として示されている)を書くとそれは可能ですが、これを行うことはお勧めしません。
それで...どうすればいいですか?技術的または実用的なソリューションに満足しています。
windows - コード例: サービスは CreateProcessAsUser() を呼び出します セッション 0 ではなく、ユーザーのセッションでプロセスを実行したい
サンプルコードを探しています:
サービスが CreateProcessAsUser() を呼び出す場合、セッション 0 ではなく、ユーザーのセッションでプロセスを実行したい
これまでのところ、作成されたプロセスはセッション 0 のサービスのようにのみ実行されています
windows - サービスからではない CreateProcessAsUser
別のユーザー アカウントの (昇格されていない) 資格情報で、そのユーザーが既にログインしている間にアプリケーションを実行したいと考えています。具体的には、アプリケーションのインストーラー (任意の管理者アカウントで実行される) が、ログインしている各ユーザーのデスクトップ セッションにプロセスを生成するようにします。これらのプロセスはサービスと通信し、ユーザーが操作できるようにデスクトップにウィンドウを表示します。
通常、 として実行されているサービスからLocalSystem
のアプローチはWTSQueryUserToken
->CreateProcessAsUser
です。ただし、アカウントWTSQueryUserToken
の外部で(特権を使用して) 実行されないため、ここではそのアプローチは失敗します。LocalSystem
SE_TCB_NAME
ユーザーがまだログインしていない場合は、アプリケーションを で実行するように登録するだけで、ログインしているHKLM\...\Run
ユーザーはログイン時にアプリケーションのコピーを取得できます。しかし、ユーザーが既にログインしている場合は、どちらも機能しません (少なくとも、ログアウトして再度ログインするまでは機能しません)。
考えられる答えは 2 つあります。
これはできません。ごめん。
別の場所からトークンを取得し (おそらく、explorer.exe プロセスを列挙し、それぞれからアクセス トークンを取得しますか?)、 を呼び出し
DuplicateTokenEx
て、 に渡しCreateProcessAsUser
ます。このアプローチを試してみたところ、OpenProcessToken
別のユーザー セッションで実行中のプロセスを実行しようとすると、デバッグ権限が有効になっており、プロセスがPROCESS_ALL_ACCESS
.
どう思いますか?
答えが #1 (「これを行うことはできません」) の場合、昇格されていないプロセスを生成してサービスとユーザーの間を仲介するための推奨されるベスト プラクティスは何ですか? サービスが CreateProcessAsUser を介してこれらのプロセスを各セッションに生成するのがベスト プラクティスですか? または、昇格されていないプロセスを個別に実行するのがベスト プラクティスですか (たとえば、HKLM\...\Run
またはを介してHKCU\...\Run
)?
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 ステーションまたはデスクトップの問題を示唆しています。何か案は?
windows - Win7 ログオン画面でアプリケーションを実行する
サービスから Windows 7 のログオン画面でアプリケーションを実行したいと考えています。
私はこれについて長い間調査を行っており、すでにさまざまな方法を試していますが、残念ながらこれまでのところ完全に成功していません. 現在ログオンしているユーザーのロック画面でアプリケーションを実行することができました。しかし、その後、ユーザーごとに異なるログオン画面と一般的な (ユーザーに依存しない) ログオン画面があることに気付きました。
私の推測では、このユーザーに依存しないログオン画面 (複数のアカウントが利用可能な場合、またはロック画面で「ユーザーの切り替え」をクリックしたときに起動した直後に表示される) はセッション 0 で実行され、ユーザー 1 はセッション 1 で実行され、ユーザー 2 はセッションで実行されます。 2など。問題は、セッション 0 (「winsta0\winlogon」を使用) でアプリケーションを実行すると、アプリケーションが表示されないことです。セッション 1 での実行は問題なく動作しますが、そのためにはユーザーがすでにログインしている必要があるため、あまり役に立ちません。
では、ユーザーに依存しないログオン/ウェルカム画面でアプリケーションを実行するにはどうすればよいでしょうか? この目的のための正しいパラメータと関数は何ですか? 誰かがデモンストレーションのための実例を持っていますか? (Delphi が推奨されますが、実際には他の言語でも同様です!)
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プログラムコードの簡略化した例