2011-11-10 11 views
5

管理者としてcsriptを起動しようとしています(ログインしたアカウントには管理者権限があります)。 startinfo.verbをrunasに設定​​しても動作しません。C#管理者としてコマンドを起動

ProcessStartInfo p1 = new ProcessStartInfo(); 
p1.UseShellExecute = true; 
p1.Verb = "runas"; 
p1.FileName = "cscript"; 
p1.Arguments = "I:\\WPKG\\wpkg.js /synchronize /quiet /nonotify"; 
Process p = new Process(); 
p.StartInfo = p1; 
p.Start(); 

私が特権で始めるために得ることができる唯一の方法は、ユーザー名とパスワードを手動で設定することです。しかし、私はその情報をハードコードしたり、設定に入れることはできません。ログイン情報なしでcmdを昇格させる方法はありますか?

上記のコードの周りに(System.Security.Principal.WindowsIdentity.GetCurrent()。Impersonate())を追加してみました。

注:私がbatファイルを直接実行すると、パスワードがハードコードされた状態で実行されても機能します。ログイン情報なしでC#からの起動を向上させることはできません。

+0

明らかに、ログインには名前とパスワードが必要です。 "runas"を正しく実行するために文字列連結を使用できないのはなぜですか?管理者権限を取得する方法の説明は、こちらをご覧くださいhttp://stackoverflow.com/questions/3583501/c-net-acquire-administrator-rights – foowtf

+0

私は現在ログインしているユーザー。右クリックして管理者として実行するのと同じ動作をさせる唯一の方法は、ログイン情報をコード化することです。一種の吸血鬼。 – JeremyK

+0

これほど簡単ではありません。 「管理者として実行」をクリックすると、最初に確認する必要があります。これは便利なので、毎回(Linuxのように)パスワードを入力する必要はありません。そうしないと、小さなアプリケーションがadminとしてログインしている可能性があります。 – foowtf

答えて

1

このユーティリティ:

http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/

は役立つかもしれないポストにあまりにもコメントを注意してください

+1

http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/03/27/elevate-a-process-at-the-command-line-in-vista.aspx からexeを使用するこれは機能します。なぜそれが動作し、私の理由を見るためにコードを調べるつもりです。 – JeremyK

+0

ああ、そうですね、私も成功しました。+1。 –

0

あなたは、いくつかの選択肢があります。

  • は(動詞ではない)runasユーティリティを使用して、ユーザ名とパスワードを渡します。資格情報を保存して手動でこれを1回行う必要があります(再起動するまで有効です)。
  • ProcessStartInfo上のユーザ名とパスワードを渡す(あなたがSecureStringにパスワードを変換する必要があります。
  • this questionで説明したように、UACと対話するrunas動詞(ないユーティリティ)を使用してください。
+0

私はrunasを使用しようとしています(これは.Verbを設定します)。ただし、UACは昇格を求めることはありません。この記事で報告された唯一の特別なケースは、UseShellExecuteをtrueに設定する必要があるということでした。 – JeremyK

関連する問題