C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

スタートアップ登録しても起動しない /luka (20/05/13(Wed) 18:23) #94764
Re[1]: スタートアップ登録しても起動しない /Azulean (20/05/13(Wed) 19:00) #94765
  └ Re[2]: スタートアップ登録しても起動しない /luka (20/05/13(Wed) 20:07) #94766
    └ Re[3]: スタートアップ登録しても起動しない /魔界の仮面弁士 (20/05/13(Wed) 20:31) #94767
      └ スタートアップ登録しても起動しない /luka (20/05/13(Wed) 21:13) #94768 解決済み


親記事 / ▼[ 94765 ]
■94764 / 親階層)  スタートアップ登録しても起動しない
□投稿者/ luka (1回)-(2020/05/13(Wed) 18:23:42)

分類:[C#] 

2020/05/13(Wed) 18:32:39 編集(投稿者)

初めての質問をさせていただきます。
文字足らずでしたら、指摘お願い致します。

VisualStudio 2019 C#
Windows Form Application
.NET Framework4.7.2


OSを起動した時にソフトを起動させるために、レジストリに書き込む方法を最初に試しましたが、起動しませんでした (別のアプリケーションだと起動しました)
次に、レジストリが駄目なら、Windowsフォルダーのスタートアップフォルダに
ショートカットを作成するようにすればいいじゃないかと思い、してみたところ
上手く起動出来ませんでした。

App.manifestを追加して
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
これを
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /
書き換え管理者権限で実行させているのが原因かと思い
戻しましたが、起動する事はありませんでした。

どうか、ご教授お願い致します。
[ □ Tree ] 返信 編集キー/

▲[ 94764 ] / ▼[ 94766 ]
■94765 / 1階層)  Re[1]: スタートアップ登録しても起動しない
□投稿者/ Azulean (1150回)-(2020/05/13(Wed) 19:00:53)
No94764 (luka さん) に返信
> これを
> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /
> 書き換え管理者権限で実行させているのが原因かと思い
> 戻しましたが、起動する事はありませんでした。

確かに管理者権限を必要とするアプリをスタートアップに登録しても起動できないという仕様上の制限はあったはずです。

戻しても起動しなかったとありますが、戻してビルドした結果ですか?
リビルドしても同じですか?
戻した&ビルドした exe を異なるフォルダーにコピーしてからスタートアップ登録しても同様ですか?


別のフォルダーにすれば大丈夫と言うことなら何かキャッシュされているのかな…?
[ 親 94764 / □ Tree ] 返信 編集キー/

▲[ 94765 ] / ▼[ 94767 ]
■94766 / 2階層)  Re[2]: スタートアップ登録しても起動しない
□投稿者/ luka (2回)-(2020/05/13(Wed) 20:07:51)
No94765 (Azulean さん) に返信

> 確かに管理者権限を必要とするアプリをスタートアップに登録しても起動できないという仕様上の制限はあったはずです。

自分のプログラム内で管理者実行が必要なアプリだった為、プロパティから管理者実行のチェックを外すと出来ました
スタートアップで管理者実行させるようにしないといけない、新たな課題にぶつかりましたが..
可能なのでしょうか.. 幾度もすいません。



[ 親 94764 / □ Tree ] 返信 編集キー/

▲[ 94766 ] / ▼[ 94768 ]
■94767 / 3階層)  Re[3]: スタートアップ登録しても起動しない
□投稿者/ 魔界の仮面弁士 (2718回)-(2020/05/13(Wed) 20:31:42)
No94766 (luka さん) に返信
> スタートアップで管理者実行させるようにしないといけない、新たな課題にぶつかりましたが..
> 可能なのでしょうか.. 幾度もすいません。

スタートアップした途端、UAC の昇格ダイアログが出ることになりますが、
それで構わなければ、「自身を runas 指定で起動しなおす」という手があります。


using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;

[STAThread]
public static void Main(string[] args)
{
  var wi = WindowsIdentity.GetCurrent();
  var wp = new WindowsPrincipal(wi);
  bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);
  if (!runAsAdmin)
  {
    if (args.Length == 1 && args[0] == "luka@wankuma94764")
    {
      // runas で呼ばれたようだが、管理者権限が無かったので諦める
      // (必要なら、エラーログやメッセージを出力する処理をここに記述)
      return;
    }

    // 新しいプロセスで、自身を管理者として起動しなおす
    var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
    // 下記のプロパティにより、新しいプロセスが管理者として実行されます。
    processInfo.UseShellExecute = true;
    processInfo.Verb = "runas";
    processInfo.Arguments = "luka@wankuma94764"; // runas で呼んだことを示すための証

    // 新規プロセスを起動
    try
    {
      Process.Start(processInfo);
    }
    catch (Exception)
    {
      // ユーザーがアプリケーションを管理者として実行することを許可しなかった場合、
      // 起動できずに例外になる
      // (必要なら、エラーログやメッセージを出力する処理をここに記述)
    }
    return;
  }

  // 管理者として実行される場所
  /*
  ** Application.EnableVisualStyles();
  ** Application.SetCompatibleTextRenderingDefault(false);
  ** Application.Run(new MainForm());
  */
}
[ 親 94764 / □ Tree ] 返信 編集キー/

▲[ 94767 ] / 返信無し
■94768 / 4階層)  スタートアップ登録しても起動しない
□投稿者/ luka (6回)-(2020/05/13(Wed) 21:13:14)
2020/05/13(Wed) 21:14:14 編集(投稿者)



No94767 (魔界の仮面弁士 さん) に返信
>>スタートアップで管理者実行させるようにしないといけない、新たな課題にぶつかりましたが..
>>可能なのでしょうか.. 幾度もすいません。
>
> スタートアップした途端、UAC の昇格ダイアログが出ることになりますが、
> それで構わなければ、「自身を runas 指定で起動しなおす」という手があります。


わざわざ、コードの記述までありがとうございます
自分が思う物になりました
ありがとうございました。!
解決済み
[ 親 94764 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -