Estrutura SHCREATEPROCESSINFOW (shellapi.h)
[SHCreateProcessAsUserW não é mais implementado no Windows XP ou em versões posteriores.]
Contém as informações necessárias para SHCreateProcessAsUserW para criar um processo.
Sintaxe
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;
Membros
cbSize
Tipo: DWORD
O tamanho, em bytes, dessa estrutura.
fMask
Tipo: ULONG
Uma matriz de sinalizadores que indica o conteúdo e a validade dos outros membros da estrutura. Isso pode ser uma combinação dos valores a seguir.
SEE_MASK_CLASSKEY
Use a chave do registro de classe do arquivo.
SEE_MASK_CLASSNAME
Use o nome da classe do arquivo.
SEE_MASK_CONNECTNETDRV
Valide o compartilhamento e conecte-se a uma letra da unidade. O membro pszFile é um caminho UNC de um arquivo em uma rede.
SEE_MASK_DOENVSUBST
Expanda todas as variáveis de ambiente.
SEE_MASK_FLAG_DDEWAIT
Aguarde até que a conversa DDE seja encerrada antes de retornar.
SEE_MASK_FLAG_NO_UI
Não exiba uma caixa de mensagem de erro se ocorrer um erro.
SEE_MASK_HMONITOR
Use esse sinalizador ao especificar um monitor em sistemas multimonitoramento.
SEE_MASK_NOCLOSEPROCESS
O aplicativo fechará o processo. Se o membro lpProcessInformation for um ponteiro de PROCESS_INFORMATION válido e SEE_MASK_NOCLOSEPROCESS estiver definido, o processo permanecerá aberto quando SHCreateProcessAsUserW retornar. Os membros hProcess e hThread da estrutura PROCESS_INFORMATION mantêm o processo e os identificadores de thread, respectivamente. Normalmente, esse sinalizador é definido para permitir que um aplicativo descubra quando um processo criado com SHCreateProcessAsUserW é encerrado. Em alguns casos, como quando a execução é atendida por meio de uma conversa DDE, nenhum identificador será retornado. O aplicativo de chamada é responsável por fechar o identificador quando ele não é mais necessário. Se esse sinalizador não estiver definido, o processo será fechado antes que SHCreateProcessAsUserW retorne, mesmo que lpProcessInformation seja um ponteiro válido.
SEE_MASK_NO_CONSOLE
Crie um console para o novo processo em vez de fazer com que ele herde o console do pai. É equivalente a usar um sinalizador CREATE_NEW_CONSOLE com CreateProcess.
SEE_MASK_UNICODE
Indica um aplicativo Unicode.
hwnd
Digite: HWND
Um identificador de janela pai.
pszFile
Tipo: LPCWSTR
Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que especifica o arquivo executável no qual SHCreateProcessAsUserW executará a ação especificada pelo verbo runas . O verbo runas deve ter suporte da classe do arquivo.
pszParameters
Tipo: LPCWSTR
Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que contém os parâmetros do aplicativo. Os parâmetros devem ser separados por espaços.
pszCurrentDirectory
Tipo: LPCWSTR
Uma cadeia de caracteres Unicode terminada em nulo que contém o diretório atual.
hUserToken
Tipo: HANDLE
Um token de acesso que pode ser usado para representar um usuário específico. Ela é necessária quando há vários usuários para essas pastas que são tratadas como pertencentes a um único usuário. O aplicativo de chamada deve ter privilégios de segurança apropriados para o usuário específico, incluindo TOKEN_QUERY e TOKEN_IMPERSONATE, e o hive do registro do usuário deve estar montado no momento. Para obter mais discussões sobre problemas de controle de acesso, consulte Controle de Acesso.
lpProcessAttributes
Tipo: LPSECURITY_ATTRIBUTES
Um ponteiro para uma estrutura SECURITY_ATTRIBUTES com o descritor de segurança para o novo processo. Ele também especifica se um processo filho pode ser herdado. Se esse parâmetro for definido como NULL, o processo terá um descritor de segurança padrão e o identificador não poderá ser herdado.
Aviso de segurança: Usar um descritor de segurança incorretamente pode comprometer a segurança do aplicativo. Para obter mais informações, consulte SECURITY_ATTRIBUTES.
lpThreadAttributes
Tipo: LPSECURITY_ATTRIBUTES
Um ponteiro para uma estrutura SECURITY_ATTRIBUTES com o descritor de segurança para o novo thread. Ele também especifica se um processo filho pode ser herdado. Se esse parâmetro for definido como NULL, o processo terá um descritor de segurança padrão e o identificador não poderá ser herdado.
Aviso de segurança: Usar um descritor de segurança incorretamente pode comprometer a segurança do aplicativo. Para obter mais informações, consulte SECURITY_ATTRIBUTES.
bInheritHandles
Tipo: BOOL
Um indicador de se o novo processo herda identificadores do processo de chamada. Se definido como TRUE, cada identificador aberto herdável no processo de chamada será herdado pelo novo processo. Os identificadores herdados têm o mesmo valor e privilégios de acesso que os identificadores originais.
dwCreationFlags
Tipo: DWORD
Sinalizadores que controlam a criação do processo e a classe de prioridade. Para obter uma lista dos sinalizadores disponíveis, consulte CreateProcessAsUser.
lpStartupInfo
Tipo: LPSTARTUPINFOW
Um ponteiro para uma estrutura STARTUPINFO que especifica como a janela main para o novo processo deve aparecer.
lpProcessInformation
Tipo: LPPROCESS_INFORMATION
Um ponteiro para uma estrutura PROCESS_INFORMATION que recebe informações sobre o novo processo. Defina esse membro como um ponteiro de estrutura válido e defina o sinalizador SEE_MASK_NOCLOSEPROCESS no membro fMask e o processo permanecerá aberto quando a função retornar. Os membros hProcess e hThread da estrutura PROCESS_INFORMATION manterão os identificadores de processo e thread, respectivamente. Defina esse membro como NULL e o processo será fechado antes que a função retorne.
Comentários
Para incluir aspas duplas em pszParameters, você deve colocar cada marca entre aspas, como no exemplo a seguir:
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
Nesse caso, o aplicativo recebe três parâmetros: Um, exemplo:, e "texto entre aspas".
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | shellapi.h |