2012-03-01 21 views
0

私はVB6で書いたアプリケーションを持っており、ユーザーがログインした直後にデスクトップが実際にロードされる前に実行する必要があります。なぜあなたが尋ねる、よく私はあなたに言うでしょう。 VBアプリケーションは、外部データベースに対して検証された情報をユーザに尋ねます。検証に失敗した場合、ユーザーはログインを許可されるべきではないため、VBアプリケーションはログアウトを強制します。私はmsGina.dllとログオンプロセスに関するいくつかの記事を読んだことがありますが、まだ実行可能な解決策を見つけることはできません。このアイデアは何ですか?ウィンドウのログオンプロセスを制御する必要があります

答えて

1

理想的には、独自のGINAプロバイダを作成して、Windowsのログインメカニズムを変更したい場合があります。しかし、これは深刻な問題であり、C/C++でコードを記述する必要があります。また、いくつかのバックドアや脆弱性を開かないように、ビルド方法を非常に細心の注意を払わなければなりません。残りのWindowsを不安定化させることはありません。

あなたのVB6アプリは、このシナリオにはさまざまな理由がありますが、セキュリティメカニズムを完全に傍受して迂回するのは簡単ではありません。

ログイン機構をBuildngすることは、本当に堅実で爆弾のようなものを構築する方法を本当に掘り下げ始めるまで、ケーキのようです。私はこれを知っています。なぜなら、私はかつて、ヨーロッパ政府の安全なデスクトップのためのカスタムGINAを構築するチームを導いたからです!

あなたがカスタムGINAを構築行きたくない特定している場合、これらの概要についての記事を見てみましょう:

Customizing GINA, Part 1

Customizing GINA, Part 2

+1

これはWindows XPでのみ機能することに注意してください。 Windows Vista以降には、異なる仕組みがあります。 –

1

A GINAが一つの選択肢であるが、唯一のWindows XPの場合Windows Vista以降に対応するものはcredential providerです。代替案として

、このレジストリキーにUSERINIT値を変更することにより、初期ユーザー・プロセスを変更することができます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 

あなたがこれを行う場合は、それが行われたときにアプリケーションがUSERINITを起動することを確認し、またはユーザーのシェルは起動しません。これにより、知識のないユーザーは、少なくともさらなる手順を経ることなく、アプリケーションをバイパスすることはできません。

credential managerは、ログオンプロセス中にユーザーとやり取りできますが、ログオンを拒否する直接的な方法はありません。一緒に何かをハックする可能性がありますが、私はそれをお勧めしません。

私はgroup policy client-side extensionがユーザーログオンを拒否できると信じていますが、私はこの技術に精通していません。

+0

私は、ユーザーのためのシェルを、私がそれらと対話するために必要なアプリケーションで置き換えることを検討していました。何らかの理由でアプリをキャンセルしてログアウトすると、私の考えはここにあります。資格情報テストに合格すると、デスクトップのロードを続行できます。どのレジストリ値が 'Shell'か 'Userinit'を使う方が良いでしょう – todd1215

+0

おそらくuserinitですが、私はあなたに実験を勧めます。 –

0

これはセキュリティに対する非常に奇妙なアプローチです。私はこれを自分自身で使いこなしていませんが、 "Autoexec.bat"ファイルを見ることができます。いずれにしても、ユーザーはおそらくタスクマネージャからVB6アプリケーションを終了し、そのメリーな方法について頭を向けることができると思われる。

関連する問題