私はいくつかのWinForms開発を行っており、XPとVS 2005を実行しています(古代、私は知っています)。アプリケーションが管理者権限なしで実行できることを確認したいのですが、VSを非管理者として実行するのが面倒で、ログインおよびログアウトしてアプリをテストしたくありません。
非管理者としてデバッグする方法はありますか?
非管理者と同じ権限セットで実行するように強制するコードに追加できるコードアクセスセキュリティ属性のセットはありますか?
私はいくつかのWinForms開発を行っており、XPとVS 2005を実行しています(古代、私は知っています)。アプリケーションが管理者権限なしで実行できることを確認したいのですが、VSを非管理者として実行するのが面倒で、ログインおよびログアウトしてアプリをテストしたくありません。
非管理者としてデバッグする方法はありますか?
非管理者と同じ権限セットで実行するように強制するコードに追加できるコードアクセスセキュリティ属性のセットはありますか?
現在ログインしているデスクトップセッションから別のユーザーとしてVSを実行します。Windowsでプログラムを実行するときに「実行」コマンドを有効にして使用する方法を参照してください。これは、ログインおよびログアウトする必要がないことを意味します。
RunAsを介してターゲットアプリケーションを別のユーザーとして実行し、VisualStudioの[デバッグ]>[プロセスにアタッチ...]メニュー項目を使用して、VSデバッガーをプロセスにアタッチすることをお勧めします(必要な場合)。
より根本的な変更でこれにアプローチします。
コンピューターで同時リモート デスクトップ セッション ( Vista、XP、他のユーザーには Google を使用) を許可し、127.0.0.2 へのリモート デスクトップ セッションを開始すると、ローカル システムで完全に異なるユーザーとして実行でき、次のことが可能になります。ユーザーを切り替えることなく、好きなように操作できます。
私の場合、通常は管理者以外のユーザーとして実行しますが、管理タスクを実行する必要があるときはいつでも管理者としてリモート デスクトップ セッションを開始します。しかし、逆のことも簡単にできます。
Phil の回答に基づいて、スタートアップ プロジェクトを次のように設定することでプロセスを自動化できます。
外部プログラムを開始します。c:\windows\system32\runas.exe
コマンドライン引数を使用:/noprofile /user:{MachineName}\{UserName} {ApplicationName}.exe
残念ながら、(セキュリティ警告のため) プロセスを VS デバッガーに自動的にアタッチする方法はないと思いますが、条件付きで呼び出すことによって
#if (DEBUG)
System.Diagnostics.Debugger.Launch();
#endif
2 回のクリックでデバッガーにアタッチするように求められます。