Bagikan melalui


Fungsi GetCommandLineA (processenv.h)

Mengambil string baris perintah untuk proses saat ini.

Sintaksis

LPSTR GetCommandLineA();

Mengembalikan nilai

Nilai yang dikembalikan adalah penunjuk ke string baris perintah untuk proses saat ini.

Komentar

Masa pakai nilai yang dikembalikan dikelola oleh sistem, aplikasi tidak boleh membebaskan atau memodifikasi nilai ini.

Proses konsol dapat menggunakan argumen argc dan argv dari utama atau fungsi wmain dengan menerapkannya sebagai titik masuk program.

Proses GUI dapat menggunakan argumen lpCmdLine fungsi WinMain atau wWinMain dengan mengimplementasikannya sebagai titik masuk program.

Untuk mengonversi baris perintah ke array gaya argv, teruskan hasil dari GetCommandLineA ke CommandLineToArgvW.

Nota

Nama yang dapat dieksekusi di baris perintah yang disediakan sistem operasi untuk proses belum tentu identik dengan itu di baris perintah yang diberikan proses panggilan ke fungsi CreateProcessA. Sistem operasi dapat menambahkan jalur yang sepenuhnya memenuhi syarat ke nama yang dapat dieksekusi yang disediakan tanpa jalur yang sepenuhnya memenuhi syarat.

Keterangan Keamanan

Baris perintah yang dikembalikan oleh GetCommandLineA adalah konversi baris perintah Unicode ke halaman kode proses 8-bit.

Untuk sebagian besar halaman kode konversi ini hilang dan baris perintah yang dikonversi dapat berbeda dari baris perintah Unicode, membuat kemungkinan masalah keamanan seperti berikut ini:

  • Konversi dapat mengubah string yang dimaksudkan untuk digunakan sebagai nama file. Misalnya, jika halaman kode ANSI adalah Windows-1252, karakter Unicode U+0100 (huruf kapital Latin A dengan macron: Ā) dikonversi ke 0x41 (huruf kapital Latin A). Jika pengguna meneruskan nama file yang berisi karakter Ā, program yang menggunakan GetCommandLineA akan menerimanya dengan karakter A dan beroperasi pada file yang salah.
  • Konversi dapat mengubah cara baris perintah diurai. Misalnya, jika halaman kode ANSI adalah Windows-1252, karakter Unicode U+FF02 (Tanda kutip Fullwidth: ") dikonversi ke 0x22 (tanda kutip ASCII) dan karakter Unicode U+2010 (Tanda Hubung: ‐) dikonversi ke 0x2D (tanda minus ASCII). Kedua hal ini dapat mengakibatkan argumen file baris perintah disalahartikan sebagai opsi baris perintah.

Untuk menghindari masalah ini, gunakan fungsi GetCommandLineW untuk menerima baris perintah Unicode, atau gunakan manifes aplikasi (pada Windows Versi 1903 atau yang lebih baru) untuk mengatur UTF-8 sebagai halaman kode proses.

Nota

Header processenv.h mendefinisikan GetCommandLine sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Platform Target Windows
Header processenv.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

fungsi CreateProcessA

Fungsi Proses dan Utas