DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マニュフェスト定義無しで管理者権限で実行できるのか?

環境/言語:[環境(Windows XP)、Visual  Studio2008、使用言語(C#)、.NET Frameworkのバージョン(2.0)]
分類:[.NET]

あるプログラム@から別のプログラムAを
Process.Start("プログラムA.exe");
を使用して実行する。
プログラムAには、マニュフェストを定義する。

上記の方法だと、プログラムAは管理者権限で実行できるらしいのですが
この方法以外で、Aの処理を@のプログラム内に移動し(プログラム@Aを分割しない)
Aの処理(メソッド)のみ管理者権限で実行できるような方法はありますでしょうか?

どうか、宜しくお願い致します。
■No27465に返信(ぱんだこぱんださんの記事)
> プログラムAには、マニュフェストを定義する。
requestedExecutionLevel ですね。

# マニュフェストというか、公式には
# マニフェストと表記されています。


> 上記の方法だと、プログラムAは管理者権限で実行できるらしいのですが
マニフェストで強制する代わりに、RunAs を使ってみてください。
http://msdn.microsoft.com/ja-jp/windows/ff467967.aspx
http://blogs.msdn.com/b/tsmatsuz/archive/2007/01/25/windows-vista-uac-part-2.aspx

関連情報として、このあたりも。
http://www.atmarkit.co.jp/fdotnet/dotnettips/992shieldicon/shieldicon.html


> プログラム@Aを分割しない
現在のプロセスを動的に昇格したり降格したりすることはできませんが、
たとえば自分自身を runas で起動するようにして、
ProcessStartInfo.Arguments の引数指定で動作を変更すれば、
それに近い動作になるかと思います。


あるいはプロセスでは無く、COM インスタンスとして分離する手法もあります。
CoCreateInstanceAsAdmin や CreateElevatedComObject といった名前で
検索してみてください(これらは API ではなく、サンプルコードの名前です)。
> マニフェストで強制する代わりに、RunAs を使ってみてください。
> http://msdn.microsoft.com/ja-jp/windows/ff467967.aspx
> http://blogs.msdn.com/b/tsmatsuz/archive/2007/01/25/windows-vista-uac-part-2.aspx
>
> 関連情報として、このあたりも。
> http://www.atmarkit.co.jp/fdotnet/dotnettips/992shieldicon/shieldicon.html

RunAsは知らなかったので、大変参考になりました。
マニフェスト、またはRunAsのどちらかで対応してみようと思います。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板