Bagikan melalui


Fungsi WinExec (winbase.h)

Menjalankan aplikasi yang ditentukan.

Catatan Fungsi ini disediakan hanya untuk kompatibilitas dengan Windows 16-bit. Aplikasi harus menggunakan fungsi CreateProcess .
 

Sintaks

UINT WinExec(
  [in] LPCSTR lpCmdLine,
  [in] UINT   uCmdShow
);

Parameter

[in] lpCmdLine

Baris perintah (nama file ditambah parameter opsional) agar aplikasi dijalankan. Jika nama file yang dapat dieksekusi dalam parameter lpCmdLine tidak berisi jalur direktori, sistem mencari file yang dapat dieksekusi dalam urutan ini:

  1. Direktori tempat aplikasi dimuat.
  2. Direktori saat ini.
  3. Direktori sistem Windows. Fungsi GetSystemDirectory mengambil jalur direktori ini.
  4. Direktori Windows. Fungsi GetWindowsDirectory mengambil jalur direktori ini.
  5. Direktori yang tercantum dalam variabel lingkungan PATH.

[in] uCmdShow

Opsi tampilan. Untuk daftar nilai yang dapat diterima, lihat deskripsi parameter nCmdShow dari fungsi ShowWindow .

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan lebih besar dari 31.

Jika fungsi gagal, nilai yang dikembalikan adalah salah satu nilai kesalahan berikut.

Mengembalikan kode/nilai Deskripsi
0
Sistem kehabisan memori atau sumber daya.
ERROR_BAD_FORMAT
File .exe tidak valid.
ERROR_FILE_NOT_FOUND
File yang ditentukan tidak ditemukan.
ERROR_PATH_NOT_FOUND
Jalur yang ditentukan tidak ditemukan.

Keterangan

Fungsi WinExec kembali saat proses dimulai memanggil fungsi GetMessage atau batas waktu habis tercapai. Untuk menghindari penundaan waktu habis, panggil fungsi GetMessage sesegera mungkin dalam proses apa pun yang dimulai oleh panggilan ke WinExec.

Keterangan Keamanan

Nama yang dapat dieksekusi diperlakukan sebagai string pertama yang dibatasi spasi putih di lpCmdLine. Jika nama yang dapat dieksekusi atau jalur memiliki ruang di dalamnya, ada risiko bahwa executable yang berbeda dapat dijalankan karena cara fungsi mengurai spasi. Contoh berikut berbahaya karena fungsi akan mencoba menjalankan "Program.exe", jika ada, alih-alih "MyApp.exe".
WinExec("C:\\Program Files\\MyApp", ...)

Jika pengguna jahat membuat aplikasi yang disebut "Program.exe" pada sistem, program apa pun yang salah memanggil WinExec menggunakan direktori Program Files akan menjalankan aplikasi ini alih-alih aplikasi yang dimaksudkan.

Untuk menghindari masalah ini, gunakan CreateProcess daripada WinExec. Namun, jika Anda harus menggunakan WinExec karena alasan warisan, pastikan nama aplikasi diapit dalam tanda kutip seperti yang ditunjukkan pada contoh di bawah ini.

WinExec("\"C:\\Program Files\\MyApp.exe\" -L -S", ...)

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll
Set API ext-ms-win-kernel32-process-l1-1-0 (diperkenalkan dalam Windows 10, versi 10.0.14393)

Lihat juga

CreateProcess