質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

3回答

8533閲覧

管理者権限(UAC)で動作するC#プログラムで、他のプロセスを権限を降格させてユーザ権限で起動する方法

minaduki

総合スコア33

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

2クリップ

投稿2017/05/30 06:42

現状、管理者権限(UAC)で起動するアプリがあるのですが、このアプリ内から他のプロセスを起動させるときに
管理者権限から降格して一般のユーザ権限で起動させる必要があります。
簡単な方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

C#でやっているサンプルは見当たらなかったのC++の実装例です。
このあたりの処理をもとにp/invoke等すれば実装できると思います。

FAQ: How do I start a program as the desktop user from an elevated app?
上記は、(shellを変更していなければ)explorer.exeのプロセスからトークンを取得してプロセスを作成しています。
ですので、デスクトップにログインしているユーザーの権限に切り替わります。

そうではなくて、現在のプロセスのユーザーで整合性レベルだけを下げたプロセスを作成したい場合は
以下のSECURITY_MANDATORY_LOW_RIDをSECURITY_MANDATORY_MEDIUM_RIDに変更すれば良いと思います。
Create low-integrity process in C++ (CppCreateLowIntegrityProcess)

投稿2017/05/30 08:27

hmmm

総合スコア818

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minaduki

2017/05/30 08:37

ありがとうございます。  自分もC++のサンプルでユーザ権限のトークンをコピーして CreateProcessWithTokenW()で起動する方法をみつけ、サンプル起動までは確認しました。これをC#上で実装できるか少し検討してみます。
guest

0

C# なら System.Diagnostics.ProcessStartInfo を使うのが簡単です。
別ユーザーで外部アプリケーションを起動する

投稿2017/06/03 07:40

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

hmmmさんが示していた
現在のプロセスのユーザーで整合性レベルだけを下げたプロセスを作成する
例を説明するC++のサンプルコードをC#で完璧に実装してくれているリンクを発見しました。

下記リンクにある、
https://stackoverflow.com/questions/11169431/how-to-start-a-new-process-without-administrator-privileges-from-a-process-with
user3122201さんの回答にあるコードをコピペすれば目的のプログラムを作成することが可能です。

投稿2019/05/23 08:00

編集2019/05/23 08:01
mercurian-teto

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問