2012-04-20 37 views
-1

Windows 7では、管理者であっても、多くのことを行うことはできません。おそらく、私のアプリケーション私のプログラムはルートフォルダ(C:)のような保護されたデフォルトのフォルダにファイルを作成し、Windows 7の管理者でない場合はフォルダのみを作成できるので、ユーザが管理者であるかどうかを確認しますそこ。ユーザーが既に管理者であるときにC++経由で管理者をアクティブにする[管理者として実行]

私のアプリケーションで右クリックして "管理者として実行"に行くと、正常に動作します。 私のアプリケーションを自動的に管理者として実行する方法はありますか?私はActivateAdministrator();のようなコードを作ることができますし、コードを完全に利用できるようにしたいのですが、私は属性を変更するので、ifstreamでファイルを作成します。

+0

私は問題がそうだと思います:それを行う方法があれば、マルウェアは管理者権限を得るためにそれをやっています。 – Mysticial

+4

フォルダ制限とUACポップアップが理由のためにあります。彼らの周りに道を見つけたら、M $は「重大なセキュリティアップデート」を急いでしまい、あなたのコードが再び動作しなくなるでしょう。 –

+0

私は彼がUACを迂回しようとしているとは思っていません。私は、デフォルトのOSがセットアップされているもの(UACを有効または無効にしているもの)によってアプリケーションの特権を通常どおり昇格させたいと考えています。 –

答えて

4

あなたが実行可能にマニフェストを追加することができます - http://msdn.microsoft.com/en-us/library/bb756929.aspx

をUACがrequestedExecutionLevel level="requireAdministrator"は、管理者のためのプロンプトが生成されます含まれてオンにし、管理者でない、マニフェストでユーザーがシステム上で実行されている場合アプリケーションを管理者権限で実行する前に、パスワードを入力してください。 (管理者権限が必要な場合は、間違ったパスワードまたはパスワードなしで実行されなくなります)

UACをオンにしている管理者の場合、同じマニフェストでは、管理者権限が与えられている必要があります。

もちろん、実際の問題は、管理者権限を必要とするアプリケーションが行っていることを調べる必要があることです。

ほとんどの場合、通常のユーザーレベルのアプリケーションではほとんどの場合、特権は必要ありません。これはアプリケーション設計の問題です。実際には、管理者権限を必要とするアプリケーションは何ですか? 本当には必要ですか?例えばファイルを変更している場合、そのファイルはユーザーのプロファイルスペースではなく、ファイルシステム上の保護された領域にあるのはなぜですか?

2

これはC#で書かれていますが、わかりにくいかもしれません。私がしたのはDetect if running as Administrator with or without elevated privileges?でした。管理アクセスを要求している間に現在のプロセスを再実行しなかった場合(UACが有効になっている場合、現在のユーザーにポップアップを表示し、プログラムが管理者権限で実行できるかどうかを確認します)。非上昇のプロセスは非常に、新しいものに要求されたことを管理者権限を開始します

// UAC is a class from the previous link on SO 
if (UAC.IsCurrentProcessElevated()) 
{ 
    string currentProcess = Assembly.GetEntryAssembly().Location; 
    string arguments = string.Join(" ", this._Args.ToArray()); 
    ProcessStartInfo startInfo = new ProcessStartInfo(currentProcess, arguments); 
    startInfo.UseShellExecute = true; 
    startInfo.Verb = "runas"; 
    Process.Start(startInfo); 
} 

:よう

その後、いくつかの簡単な(しかし、C#コード)が見えます。

関連する問題