VSには「セットアッププロジェクト」があります。インストール中に別のプロセスを起動します:現在のユーザーでプロセスを実行します
Windows 7でインストーラーを実行し、「Everyone」にインストールすると、SYSTEMの下でプロセスが開始されます。 「Just for me」をインストールすると、現在のユーザーの下でプロセスが開始されます。どのように私は常に現在のユーザーの下でプロセスを開始するのですか?
VSには「セットアッププロジェクト」があります。インストール中に別のプロセスを起動します:現在のユーザーでプロセスを実行します
Windows 7でインストーラーを実行し、「Everyone」にインストールすると、SYSTEMの下でプロセスが開始されます。 「Just for me」をインストールすると、現在のユーザーの下でプロセスが開始されます。どのように私は常に現在のユーザーの下でプロセスを開始するのですか?
私は非常に単純なsolutionを見つけました。必要なのは、新しいクラスを作成し、このリンクからテキストをコピーするだけです。
プロセス呼び出しProcessAsUser.Launch("program name");
ProcessStartInfoクラスとそのプロパティUserName
を使用し、Process.Start静的メソッドの引数として使用します。
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Process.Start(startInfo);
を起動するために、私は同様の問題があった:私のセットアップ延長(カスタムアクション)は、標高ボックスを育てた管理者権限を必要としていました。 「Just for Me」の最後にアプリケーションを開始した後、プロセスには管理コンテキスト用の設定がありました。たとえば、私のユーザーアカウントはWindowsエクスプローラでファイルのすべての拡張子を表示するのが好きですが、管理者アカウントは非表示に設定されています。だから、すべてのファイルを開くボックスで私は拡張子を見ることができませんでした。このコードのこの部分治すために働いていた:
ProcessStartInfo startInfo = new ProcessStartInfo(ShortcutTarget);
startInfo.LoadUserProfile = true;
startInfo.UseShellExecute = false;
Process.Start(startInfo);
それは管理者の設定が使用されている「みんな」で、「ちょうど私のために」モードでのみ動作します。しかし、これは私にとっては大丈夫です。
私はこれまでに試してみましたが、次のエラーメッセージが表示されます。「スタッドが悪いデータを受け取った」そして私はこの問題を解決する方法を知らない。 – kralex
パスワードはどうですか?これがなければこれはうまくいかない:) – John