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

管理者で実行するアプリを管理者権限なしで実行可能ですか?

環境/言語:[Windows Vista/7 C# VC2010 Winアプリ]
分類:[.NET]

お世話になります。

http://www.codeproject.com/KB/system/usbeject.aspx
を見てUSBの取り外しする機能をアプリに組み込もうとしています。

機能そのものは、上手くいっているように見えますが、どうもこの機能を利用するには、アプリを管理者モードで実行しないといけないようです。

管理者モードで実行していないと下記で例外「アクセスが拒否されました」と出ます。
場所は、

Volume.cs
private int[] DiskNumbers
{
get
{
     :
     :
IntPtr hFile = Native.CreateFile(@"\\.\" + LogicalDrive, Native.GENERIC_READ, Native.FILE_SHARE_READ | Native.FILE_SHARE_WRITE, IntPtr.Zero, Native.OPEN_EXISTING, 0, IntPtr.Zero);
if (hFile.ToInt32() == Native.INVALID_HANDLE_VALUE)
throw new Win32Exception(Marshal.GetLastWin32Error()); <−ここで出る


Native.cs

[DllImport("Kernel32.dll", SetLastError = true)]
internal static extern IntPtr CreateFile(string lpFileName, int dwDesiredAccess, int dwShareMode, IntPtr lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);


管理者モードで実行すればいいのですが、通常モードで実行させるように変更できるのでしょうか?
教えてください。
> 管理者モードで実行すればいいのですが、通常モードで実行させるように変更できるのでしょうか?
> 教えてください。

  私も以前、そういうソフトを作りました。
  結果、VISTA/Win7では、管理者権限必要です。

  因みに、ガジェットでUSBのフォツダを開いたり、イジェクト
  する機能を持ったものがありますが、権限的にガジェット上から
  は、イジェクトできます。アクセス権限があったからです。

※ 簡単にとはいきませんが・・・
  タスクスケジューラにイジェクトする機能のソフトを管理者権限
  付で起動するようにさせ、常駐させておき、その常駐ソフトに、
  どのドライブをイジェクトさせたいか、情報を渡せばイジェクト
  してくれる・・・と言う風にすれば、動作します。

以上。参考まで
■No29277に返信(オショウさんの記事)

>   私も以前、そういうソフトを作りました。
>   結果、VISTA/Win7では、管理者権限必要です。
>
そうですか、やっぱり無理ですか。仕方ないですね。

ありがとうございました。
解決済み!

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