0

適切に実行するために管理者権限が必要な VB.NET ベースのアプリケーションを開発しています。ただし、オンラインでいくつかのチュートリアルを行ったところ、mainifest ファイルを使用してこれを行う方法がすべて言及されていました。この手法の問題は、プログラムを開くたびに管理者パスワードを入力する必要があることですが、これを自動的に行いたいと考えています。(ユーザーは管理者パスワードを入力しないでください。パスワードはコード レベルから入力する必要があります)

次のコードは私が見つけることができる最も近いものですが、それも私の問題を満足させません.

Dim securePass As New Security.SecureString()
Dim pass As String = "password"

For Each c As Char In pass
    securePass.AppendChar(c)
Next

' If there isn't a domain, set the argument to 'Nothing', as demonstrated below.
Process.Start("testsoftware\WinKBSel\WinKBSel1003.exe", "username", pass, Nothing)

ユーザーに管理者パスワードの入力を要求せずにこれを行う方法を教えてください。

4

4 に答える 4

1

アプリケーションが管理者アカウントで実行されるバックエンド サービスを使用して、昇格された特権で必要なことを実行できる場合は、おそらくアプリケーションを分割するのが最善でしょう。UAC はユーザーを自分自身から保護するように設計されており、バックエンド サービスを追加することで回避できますが、他のアプリケーション/ウイルスによって悪用される可能性があるため、この方法で穴を開けることには十分注意してください。アプリケーションが逆コンパイルされ、パスワードが抽出される可能性があるため、アプリケーション内に管理者パスワードを保存することは常に悪い考えです。

于 2011-11-10T11:24:13.573 に答える
1

ユーザー名/パスワードが既知でない限り、ユーザーとして自動的にログオンするプログラムを作成することはできません。

つまり、アプリが資格情報を既に認識しているシステムでの実行に制限されているか、ユーザーがアプリに資格情報を入力する必要があるか、ユーザーが Windows の "Run As" 機能を使用して正しいユーザーを使用する必要があることを意味します。 .

あなたが提案していることが実際に可能である場合、それは巨大なセキュリティ ホールを表しています。最初に認証を必要とせずに、任意のユーザーとして任意のコードを実行できます。それは良いことではありません!

次のように考えてみてください:あなたの許可がなくても自動的に管理者としてログオンするプログラムを販売されたとしたら、どう思いますか?

于 2011-11-10T11:49:45.750 に答える
0

UAC は、やりたいことができないように設計されています。UAC は、昇格するために、ユーザーが UAC ダイアログ (管理者の同意ダイアログまたは肩越しのダイアログ) を通過する必要があることを保証します。期待を UAC の現実に適応させる必要があります。

于 2011-11-10T11:05:42.367 に答える
-1

このアクションにはコードは必要ありません。UAC は、ユーザーの許可なしに自動的にログオンできるように作られています。あなたができることは、マニフェストを使用してスタートアップを変更することです。これにより、アプリケーションの起動時に管理者として実行され、許可が求められます! マニフェストを変更します。調べる!

于 2012-06-03T19:02:45.433 に答える