2016-06-25 6 views
1

Windowsの昇格されたコマンドプロンプトを特定の作業ディレクトリに起動したい。したがって、たとえば、私はこれを試してみました:残念ながら、それは常にC:\WINDOWS\system32に起動 Shell特定の作業ディレクトリを持つcmdプロンプトを実行する

HINSTANCE ShellExecute(
    _In_opt_ HWND hwnd, 
    _In_opt_ LPCTSTR lpOperation, 
    _In_  LPCTSTR lpFile, 
    _In_opt_ LPCTSTR lpParameters, 
    _In_opt_ LPCTSTR lpDirectory, 
    _In_  INT  nShowCmd 
); 

として m_szSelectedFile = L"C:\\Users\\User\\Desktop"

ShellExecuteが文書化されている

ShellExecute(
    hWnd, 
    L"runas", 
    L"cmd.exe", 
    NULL, 
    m_szSelectedFile, 
    SW_SHOW 
); 

。私は間違って何をしていますか?

+0

あなたが間違っていることは、主にC++でこれを行うことです。ちょうどショートカットを作成してください。 –

+0

@ Cheersandhth.-Alf私はあなたが何を意味するのか理解しようとしています。あなたはそれを試して説明するためにいくつかのコードを流すのを助けることができると思いますか?それは私の理解を助けるだろう。たぶん、私が試みていることの文脈を説明するべきでしょうか?私はシェルのコンテキストメニューハンドラを書いており、現在選択されている場所で昇格したコマンドプロンプトを起動するために、右クリックメニューオプションが必要です。 – Alexandru

+0

'object.ShellExecute(sFile [、vArguments] [、vDirectory] ​​[、vOperation] [、vShow])'ディレクトリにnullを渡していることに注意してください。 –

答えて

5

マイクロソフトでは、Windows 8以降のセキュリティ機能としてこの機能を追加しました。cmd.exeは昇格したことを検出するたびに、起動パラメータを無視して常に%SystemRoot%\System32で開始します。この動作を無効にすることはできません。

ただし、プロンプトの最初のコマンドとしてディレクトリを変更することはできます。これを行うには、lpFile"cmd.exe"に設定します。次にlpParameters"/k cd /d d:\your\path"に設定します。 CMDは起動時に直ちにディレクトリを変更し、それ以降のコマンドのために開いたままにします。

関連する問題