2011-07-25 22 views
0

以下は私のコードです。この関数は呼び出されますが、機能しません。 exeを呼び出してはいけません。どうして?C++でCreateProcessWithLogonWを使用するには?

int Createprocesslogon() 
{ 
STARTUPINFOW su_info; 
ZeroMemory(&su_info, sizeof(STARTUPINFOW)); 
su_info.cb = sizeof(STARTUPINFOW); 

PROCESS_INFORMATION pi; 
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION)); 
CreateProcessWithLogonW(L"xxx", L"localhost", L"123456", 0, L"C:\\Program Files\\app\\IECapt.exe" ,L" --url=http://www.facebook.com/ --out=test.png --min-width=1024", 0, NULL, NULL, &su_info, &pi); 

cout << "testt"; 

return 0; 
} 

答えて

1

あなたはLogonUserを呼び出した後CreateProcessAsUser、またはCreateProcessWithTokenを意味しましたか?

EDIT: (一引数を埋め込む)、これを試してください:

CreateProcessWithLogonW(L"xxx", L"localhost", L"123456", 0, 0, 
L"\"C:\\Program Files\\app\\IECapt.exe\" \" --url=http://www.facebook.com/ --out=test.png --min-width=1024\"", 0, NULL, NULL, &su_info, &pi); 
+0

['CreateProcessWithLogonW'](http://msdn.microsoft.com/en-us/library/ms682431.aspx)には11個のパラメータが必要です。 –

+0

なぜLogonUserを呼び出す必要がありますか?管理者パスワードが異なる場合はどうなりますか?実行する方法? – karikari

+0

@ Ben、Corrected。 'lpCommandLine'(6番目の引数)に引数付きのコマンドライン全体を置きます。 @ Kari、どちらの方法でも、ユーザー名/パスワードを渡すか、 'CredUIPromptForCredentials'関数を使う必要があります。 – Ajay

0

lpCommandLineは、実行可能(適切に引用)から出発し、コマンド行全体であると考えられます。それ以外の場合、最初の引数はargv[0]になり、プログラムによって無視されます。

関連する問題