3

Windows 7 および Windows XP シン クライアントで管理者特権で実行しようとしているアプリがありますが、runas.exe コマンド ラインを正しく取得できないようです。そこにバックスラッシュのエスケープ文字が必要であることはわかっているので、runas はスペースを正しく解釈します。これは、バックスラッシュでエスケープされた単一の引数として run を送信する場合に機能します。このシナリオは解決策として私が見つけたすべてであり、機能しますが、ファイルパスなどのために引数にスペースがあるため、すべてバックスラッシュでエスケープされた複数の引数を送信する必要があります。いくつかの例を次に示します。

これらは機能し、予想どおり、管理者パスワードの入力を求めるプロンプトが表示されます。

runas.exe /user:Administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\

runas.exe /user:Administrator "C:\update_andon.exe autosetup /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\

以下の行など、必要な残りの引数を追加し始めると、問題があったことを示す runas ヘルプ テキストを受け取ります。

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\ /exename:\"eAndonKiosk.exe"\ /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\ /repository:\"\\domain\sat\shared\repository\andon kiosk"\"

1 つの解決策は、各引数を一度に 1 つずつ実行することですが、これは回避策であるほど解決策とは思えません。バックスラッシュをさまざまな引数に混在させる方法で何かが欠けていますか? どこかでもっと引用符がありませんか?

ありがとう

4

2 に答える 2

5

末尾の引用符で正しくエスケープしていないようです。バックスラッシュは、インタプリタが次の文字を見ないようにするために使用されます。末尾の引用符の場合、引用符の後にバックスラッシュを付けていますが、これは正しくありません。

ヘルプの例

"notepad \"my file.txt\""

バックスラッシュが引用符の前にあることに注意してください。マークダウンを使用してスタック交換で回答を入力するときに試してみることもできます。単一のバックスラッシュを表示するには、二重の \ を入力する必要があるためです。

オリジナルコード

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\ /exename:\"eAndonKiosk.exe"\ /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\ /repository:\"\\domain\sat\shared\repository\andon kiosk"\"

修正されたコード

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk\" /exename:\"eAndonKiosk.exe\" /directory:\"C:\Program Files\CIMS_Andon\Kiosk\" /repository:\"\\domain\sat\shared\repository\andon kiosk\""

参考文献

  1. 引用符、エスケープ文字、区切り文字 - Windows CMD - SS64.com
  2. バッチ ファイル - エスケープ文字
于 2015-04-26T18:31:47.140 に答える
1

正規の解決策: コマンドをバッチ スクリプトに記述し、スクリプトを経由して実行しますrunas

于 2012-11-13T22:34:29.717 に答える