2017-04-14 4 views
0

通常の特権で実行する必要があるプログラムがあります。著作権侵害を防ぐため、アプリケーションの起動時にライセンスマネージャーアプリケーションを起動し、昇格特権で実行する必要があります。ライセンスマネージャーには、ディスクIDの情報を読み取るために必要なファイルであるapp.manifestファイルに追加された特権が昇格されているように見えます(特権要件を減らすことはできません)。通常のアプリケーションから通常の特権アカウントから昇格された特権を持つアプリケーションを呼び出すと、プログラムファイルに配置されたときに問題が発生する

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

それは通常のフォルダに配置された場合、アプリケーションが正常にライセンスマネージャを起動します。しかし、Program Filesフォルダに置かれていると、起動時には暗黙のうちに終了するようです。

また、ライセンスマネージャを追加せずに通常の資格情報でアプリケーションを実行していることも確認しました(正常に動作します)。

通常のアカウントから権限の昇格したアプリケーションを起動できるようにするには、レジストリまたはその他のWindows設定のいずれかで設定を変更する必要がありますか。あるいは、このシナリオを可能にするコード起動セクションにコードスニペットを追加する必要があります。

Program Filesで作成したフォルダをデスクトップに貼り付けることもできました(これもうまく動作します)。

OS:Windows 7の

は、追加情報が私の側のフォームに必要とされる場合は私に知らせてください。この方向への助けに感謝します。

+0

イベントビューアでこのエラーが発生しましたか? – kennyzx

+0

@kennyzx、どこでイベントビューアを見つけることができますか? –

+0

Googleがお手伝いできます。または、 "eventvwr.exe" – kennyzx

答えて

0

のプログラムファイルの問題を前提とした私の謙虚な考え方。

ライセンスマネージャーによって書き込まれたログが、現在のアプリケーション実行フォルダーに書き込まれていることが判明しました。この問題は、アプリケーションファイルがこのフォルダにテキストファイルを書き込む権限を持たない場合に、Program Filesフォルダにログを書き込もうとしたために発生しました。

ロギングロジックは、ライセンスマネージャー(ログを書き込んでいたライセンスマネージャーで定義された関数から呼び出されたプログラム)とProgram Filesフォルダーから実行されているアプリケーションの間で共有されていました。

ログ作成フォルダをAppDataフォルダに変更しました。これにより、アプリケーションが正常に起動しました。

原因結論:

は、管理者権限を持っていなかったアプリケーションからのProgram Filesフォルダにログファイルを書き込みます。

注:私は、このタイプのシナリオでは解決策がない場合に備えて、この記事とこの回答を純粋に私のような他の人に役立てるために追加しました。

関連する問題