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.

Nota Se o caminho não estiver incluído com o nome do arquivo, o diretório atual será assumido.
 

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

Confira também

SHELLEXECUTEINFO