4

私は決して PowerShell の専門家ではありません。これをグーグルでよく調べましたが、答えが見つかりませんでした。

このスクリプトの基本的な考え方は、コマンド ライン引数を指定して appcert.exe という Microsoft ツールを実行することです。appcert.exe は 0、1、または -1 を返します。でチェックしてい$lastexitcodeます。

appcert.exe は Windows 7 と Windows 8 でのみ実行されるため、両方でスクリプトを実行しました。

Windows 7x64 (PS バージョン = 2.0) ではすべて正常に動作します。同じ手順をすべて手動で実行できます。同じ PS ウィンドウに appcert.exe の出力が表示されます。

PS バージョン = 3.0、CLRVersion = 4.0.30319.17929 の Windows 8x64 (RTM) では別の話です。

場合によっては、appcert.exe が "インライン" で実行されます (Win7 の場合と同様)。それ以外の場合は、コマンド ウィンドウが起動され、appcert.exe の出力が飛んで、コマンド ウィンドウが閉じます。それを呼び出した PS ウィンドウはチェックできません$lastexitcode(ちなみに、これはまったく設定されていません)。

マシンですべての PS バージョンを試しましたが、結果は次のとおりです。

  1. 次の場合、appcert.exe は別のウィンドウで起動されます。

    • PowerGUI 3.2.0.2237 (PS 2.0 を使用)
    • 通常の PowerShell (非管理者)
    • Windows PowerShell ISE (管理者以外)
  2. appcert.exe は、次の場合にインラインで起動されます。

    • 管理者としてPowershellを実行しました
    • 管理者として ISE を実行

上記の動作は、次の場合に取得されます。

  1. 次のように appcert コマンドを呼び出すスクリプトを起動します。& $CertToolPath
  2. ツールのホーム ディレクトリに移動し、.\appcert.exe と入力します。
  3. これを実行します:Cmd /c appcert.exe
  4. これを実行します:Invoke-expression –command appcert.exe
  5. これを実行します:[system.diagnostics.process]::start("appcert.exe")

私の同僚も同様にこれに困惑しています。

私のマシンは、ワークグループではなく、テスト ドメインにあります。テスト ドメインの管理者としてマシンにログインするので、理論的には、私は既に管理者になっています。

その管理者として MS ツールもインストールします。実際、私はマシンのローカル管理者として何もしません。何か案は?:)

よろしくお願いします、 タニア

4

1 に答える 1

1

これを他のexeで再現できますか?UAC プロンプトを無効にしていますか?

appcert.exe を管理者として実行する必要がある可能性はありますか? そうでない場合は、管理者として自動的に再起動します (これにより UAC プロンプトが表示されますが、オフにすると、単に生成されたように見えます)新しいインスタンスが自動的に)?

于 2012-12-10T18:40:33.797 に答える