Struktur SHCREATEPROCESSINFOW (shellapi.h)
[SHCreateProcessAsUserW tidak lagi diimplementasikan di Windows XP atau versi yang lebih baru.]
Berisi informasi yang diperlukan oleh SHCreateProcessAsUserW untuk membuat proses.
Sintaks
typedef struct _SHCREATEPROCESSINFOW {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCWSTR pszFile;
LPCWSTR pszParameters;
LPCWSTR pszCurrentDirectory;
HANDLE hUserToken;
LPSECURITY_ATTRIBUTES lpProcessAttributes;
LPSECURITY_ATTRIBUTES lpThreadAttributes;
BOOL bInheritHandles;
DWORD dwCreationFlags;
LPSTARTUPINFOW lpStartupInfo;
LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
Anggota
cbSize
Jenis: DWORD
Ukuran, dalam byte, dari struktur ini.
fMask
Jenis: ULONG
Array bendera yang menunjukkan konten dan validitas anggota struktur lainnya. Ini bisa menjadi kombinasi dari nilai berikut.
SEE_MASK_CLASSKEY
Gunakan kunci registri kelas file.
SEE_MASK_CLASSNAME
Gunakan nama kelas file.
SEE_MASK_CONNECTNETDRV
Validasi berbagi dan sambungkan ke huruf kandar. Anggota pszFile adalah jalur UNC dari file di jaringan.
SEE_MASK_DOENVSUBST
Perluas variabel lingkungan apa pun.
SEE_MASK_FLAG_DDEWAIT
Tunggu hingga percakapan DDE berakhir sebelum kembali.
SEE_MASK_FLAG_NO_UI
Jangan tampilkan kotak pesan kesalahan jika terjadi kesalahan.
SEE_MASK_HMONITOR
Gunakan bendera ini saat menentukan monitor pada sistem multimonitor.
SEE_MASK_NOCLOSEPROCESS
Aplikasi akan menutup proses. Jika anggota lpProcessInformation adalah penunjuk PROCESS_INFORMATION yang valid, dan SEE_MASK_NOCLOSEPROCESS diatur, proses akan tetap terbuka ketika SHCreateProcessAsUserW kembali. Anggota hProcess dan hThread dari struktur PROCESS_INFORMATION masing-masing memegang proses dan handel utas. Bendera ini biasanya diatur untuk memungkinkan aplikasi mengetahui kapan proses yang dibuat dengan SHCreateProcessAsUserW berakhir. Dalam beberapa kasus, seperti ketika eksekusi terpenuhi melalui percakapan DDE, tidak ada handel yang akan dikembalikan. Aplikasi panggilan bertanggung jawab untuk menutup handel ketika tidak lagi diperlukan. Jika bendera ini tidak diatur, proses akan ditutup sebelum SHCreateProcessAsUserW kembali, bahkan jika lpProcessInformation adalah penunjuk yang valid.
SEE_MASK_NO_CONSOLE
Buat konsol untuk proses baru alih-alih mewarisi konsol induk. Ini setara dengan menggunakan bendera CREATE_NEW_CONSOLE dengan CreateProcess.
SEE_MASK_UNICODE
Menunjukkan aplikasi Unicode.
hwnd
Jenis: HWND
Handel jendela induk.
pszFile
Jenis: LPCWSTR
Penunjuk ke string Unicode yang dihentikan null yang menentukan file yang dapat dieksekusi di mana SHCreateProcessAsUserW akan melakukan tindakan yang ditentukan oleh kata kerja runas . Kata kerja runas harus didukung oleh kelas file.
pszParameters
Jenis: LPCWSTR
Penunjuk ke string Unicode yang dihentikan null yang berisi parameter aplikasi. Parameter harus dipisahkan oleh spasi.
pszCurrentDirectory
Jenis: LPCWSTR
String Unicode yang dihentikan null yang berisi direktori saat ini.
hUserToken
Jenis: HANDEL
Token Akses yang dapat digunakan untuk mewakili pengguna tertentu. Diperlukan ketika ada beberapa pengguna untuk folder yang diperlakukan sebagai milik satu pengguna. Aplikasi panggilan harus memiliki hak keamanan yang sesuai untuk pengguna tertentu, termasuk TOKEN_QUERY dan TOKEN_IMPERSONATE, dan sarang registri pengguna saat ini harus dipasang. Untuk diskusi lebih lanjut tentang masalah kontrol akses, lihat Access Control.
lpProcessAttributes
Jenis: LPSECURITY_ATTRIBUTES
Penunjuk ke struktur SECURITY_ATTRIBUTES dengan deskriptor keamanan untuk proses baru. Ini juga menentukan apakah proses anak dapat diwariskan. Jika parameter ini diatur ke NULL, proses akan memiliki deskriptor keamanan default dan handel tidak dapat diwariskan.
Peringatan Keamanan: Menggunakan deskriptor keamanan dengan tidak benar dapat membahayakan keamanan aplikasi Anda. Untuk informasi selengkapnya, lihat SECURITY_ATTRIBUTES.
lpThreadAttributes
Jenis: LPSECURITY_ATTRIBUTES
Penunjuk ke struktur SECURITY_ATTRIBUTES dengan deskriptor keamanan untuk utas baru. Ini juga menentukan apakah proses anak dapat diwariskan. Jika parameter ini diatur ke NULL, proses akan memiliki deskriptor keamanan default dan handel tidak dapat diwariskan.
Peringatan Keamanan: Menggunakan deskriptor keamanan dengan tidak benar dapat membahayakan keamanan aplikasi Anda. Untuk informasi selengkapnya, lihat SECURITY_ATTRIBUTES.
bInheritHandles
Jenis: BOOL
Indikator apakah proses baru mewarisi handel dari proses panggilan. Jika diatur ke TRUE, setiap handel terbuka yang dapat diwariskan dalam proses panggilan diwariskan oleh proses baru. Handel yang diwariskan memiliki nilai dan hak akses yang sama dengan handel asli.
dwCreationFlags
Jenis: DWORD
Bendera yang mengontrol pembuatan proses dan kelas prioritas. Untuk daftar bendera yang tersedia, lihat CreateProcessAsUser.
lpStartupInfo
Jenis: LPSTARTUPINFOW
Penunjuk ke struktur STARTUPINFO yang menentukan bagaimana jendela utama untuk proses baru akan muncul.
lpProcessInformation
Jenis: LPPROCESS_INFORMATION
Penunjuk ke struktur PROCESS_INFORMATION yang menerima informasi tentang proses baru. Atur anggota ini ke penunjuk struktur yang valid, dan atur bendera SEE_MASK_NOCLOSEPROCESS di anggota fMask , dan prosesnya akan tetap terbuka saat fungsi kembali. Anggota hProcess dan hThread struktur PROCESS_INFORMATION kemudian akan memegang proses dan handel utas. Atur anggota ini ke NULL, dan proses akan ditutup sebelum fungsi kembali.
Keterangan
Untuk menyertakan tanda kutip ganda dalam pszParameters, Anda harus mengapit setiap tanda dalam sepasang tanda kutip, seperti dalam contoh berikut:
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
Dalam hal ini, aplikasi menerima tiga parameter: An, example:, dan "quoted text".
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional, Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Header | shellapi.h |