問題タブ [startprocessinfo]
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 - vb.net で別のユーザーとして新しいプロセスを実行する
私は現在、独自の方法を使用して、Vista で別のユーザーとしてプロセスを実行していますが、ハック的で理想的ではないという感覚から逃れることはできません (UAC をクラップアウトし、私のシステムをクラッシュさせるという事実に加えて)アプリにセキュリティ例外があり、UAC を完全に無効にする必要があります)。私のプロセスは、「インターフェイス」と「起動スタブ」の 2 つのプロジェクト (2 つの EXE ファイル) で構成されています。プロセスは次のとおりです。
- ユーザーには、「Interface.exe notepad.exe」を起動するショートカットがあります
- Interface.exe には、使用したい資格情報を要求するフォームがあります。
- Interace.exe は ProcessStartInfo を使用して、LaunchStub.exe (LS) のインスタンスを新しいユーザーとして作成します。
- LS は ProcessStartInfo (ShellExecute を true に設定) を使用して、要求されたファイルを起動します。LS は要求されたユーザーとして既に実行されているため、新しいプロセスも実行されます。
2 段階のプロセスを使用する理由は、ユーザーが、OS が既定のアクション (.EXE、.SQL、.MSC など) を持っている任意のファイルを右クリックして起動できるようにし、ProcessStartInfo のみを実行できるようにするためです。 「UseShellExecute」を有効にしてそれをサポートしますが、そのスイッチでは新しい資格情報を使用できないため、一度に 1 つしか実行できません。
これにより、いくつかの問題が発生します。まず、ユーザーはコンピューターに既に存在している必要があります。つまり、以前にローカルでログインしている必要があります。そのユーザーのローカル プロファイルがない場合、要求されたアプリが起動することがありますが、レジストリとプロファイルの例外が発生します。これは、アプリケーションがまだ存在しないもの (ユーザーが存在しないレジストリ内の HKCU ハイブなど) を想定しているためです。ログインしたことがないため)。
アプリケーションの権利を要求しているユーザーに「昇格」させ、新しいプロセスを起動し、昇格を元に戻すことができるはずですが、そのための適切なコードサンプルを見つけることができず、完全に別のユーザーとして実行できるかどうかはわかりません。これはすべて意味がありますか?これを行うためのより良い方法があるように感じずにはいられません。
更新:オンラインで見つけた偽装コードをいくつか試しましたが、役に立ちませんでした。ProcessStartInfo と組み合わせて使用すると、提供された資格情報を使用して偽装を有効にしたにもかかわらず、提供したものではなく、現在のログインを使用してプロセスを起動しているように見えます。
c# - ProcessInfo と RedirectStandardOutput
コマンド ウィンドウで別のプロセスを呼び出すアプリがあり、そのプロセスには、コンソール ウィンドウに出力される更新統計があります。これはかなり単純な操作だと思っていましたが、うまくいかないようです。何か不足していますか?
理想的には、私がヒットしたプロセス内で出力が変化するか、データがリーダーに送られ、そこからイベントを取得することです。
これは初心者の質問だと思いますが、何かが欠けているようです。
c# - 偽装の問題で外部プロセスを開始
ローカル PC (Windows 7) とローカル ホームサーバー (Windows 2008) から新しいサーバー (Windows 2003) に Web サイトを展開していて、問題が発生しました。
以下のコードで起動するプロセスがあります。変換されるビデオ ファイルが渡されます。
私が抱えている問題は、新しい Windows 2003 サーバーで動作しないことです。エラーでも何でもありません。サーバーとその taskmgr.exe を見ると、プロセスが開始されているのがわかりますが、何も起こりません。
調べてみると、私が持っている webconfig に impersonate="true" が必要だと誰もが言っているようです。現在、リモートデスクトップへのログインに使用する管理者アカウントに設定しています (これで問題ないと思います?? ?)
これはまだ機能しません.. taskmgr.exe を見ると、プロセスはユーザー名="NETWORK SERVICE" で開始されています...
何か案は???
c# - C# 内で「DOS」コマンド ラインを起動するときに Windows (XP) セキュリティ警告を回避するにはどうすればよいですか?
この質問は、少し前に尋ねられたこの最初の質問に関連しています。
抽出ツールを選択したので、指定されたコマンド ライン パラメーター ディレクトリとサブディレクトリを反復処理して、圧縮された .zip ファイルを抽出します。
しかし、7za プロセスを開始するたびに、Windows セキュリティの警告が表示されます。このような迷惑行為は避けたいので、質問させてください。
C# 内で「DOS」コマンド ラインを起動するときに Windows (XP) セキュリティ警告を回避するにはどうすればよいですか?
c# - 64ビットマシンでシェル実行を使用せずにC#で32ビットプロセスを開始する方法は?
従来の 32 ビット レポート アプリケーションを実行する必要がある 64 ビット マシン上に ASP .NET Web アプリケーションがあります。
でプログラムを実行するとUseShellExecute = false
、プログラムは終了コードで終了します。
-1073741502
別のユーザーとしてプロセスを実行する必要があるため、Shell Execute を使用できません。ただし、Shell Execute が true の場合、プロセスは正常に実行されます (ただし、ASP .NET を実行しているユーザーを変更する必要があります)。
シェル実行を使用せずに C# を使用してこの 32 ビット プログラムを開始するにはどうすればよいですか?
これが私が今持っているコードです:
c# - MySQLデータベースのダンプがコマンドラインによるダンプとプログラム的に異なるのはなぜですか?
コマンドラインからデータベースをダンプするには、次のことを行う必要があります。
したがって、プログラムで試すのはこれだけです。これは、私が推測する直接的な解釈です。
これはまったく機能しません。代わりに、ネット全体で見つけることができるこれを選択する必要があります。これも機能します。
コマンドプロンプトのコマンドから直接実行できるSQLファイルでデータベースを取得するためにストリームライターを使用する必要があるのはなぜですか?
2番目のブロックでの-Rの役割は何ですか?
c# - EXEをインストールし、C#でディレクトリを指定します
特定のプログラムをインストールする場所をC#で指定するにはどうすればよいですか?.WorkingDirectoryを使用してみましたが、機能しませんでした。デスクトップのNotepadFolder内にNotepad++インストーラーをインストールしたいのですが、どうすればよいですか?
私はdotnetperls.comで以下のコードを見ました。彼らは2つの文字列とその引数の使用を指定しなかったので、私は今混乱しています:
process - C#からのプロセスで.exeを開始すると、.exeを直接実行した場合とは異なる結果が得られます
単体テスト用のWCFサービスをホストするカスタムを開始するためProcess
にProcessInfo
クラスを使用するTFS2010ビルドで実行されるカスタムワークフローアクティビティがあります。.exe
カスタム.exeを、クラスを使用Process
しProcessInfo
て開始するワークフローアクティビティから実行すると、何も機能せず、単体テストに合格しません。.bat
しかし、ビルドサーバー上のファイルを使用してプロセスを直接開始すると、すべてのテストに合格します。
Process
.batファイルを使用して直接実行するのではなく、.Netのクラスからプロセスを実行することに違いはありますか?
c#-4.0 - System.Diagnostics.Process.Start with WindowStyle.Hidden がハンドルを返さない
非表示モードで process.start を使用して、単純な .net exe/notepad.exe を開こうとしています。そして、しばらくしてから application.exe を表示できるようにするために、後でプロセスハンドルが必要です。
WindowStyle.Minimized、WindowStyle.Maximized、WindowStyle.Normal でのみハンドルを取得できます。Hidden スタイルでは、常に 0 になります。
Thread.Sleep を使用せずにハンドルを取得する方法。ハンドルを取得するには、数秒待つ必要があります。一部の exe は、そのパフォーマンス (大量のデータ) に基づいて、より多くの待機時間を必要とします。
/li>