アドミン権限で実行可能なアプリのインストーラーを、通常のユーザー環境で実行出来
るようなPGを考えています。
ローカルアカウント(Administrator)では成功したのですが、
ドメインアドミニストレーターで実行したい為、ドメイン名を取得したいのですが方法
がわかりません。
ご教授頂けないでしょうか。
int main(int argc, char* argv[])
{
WCHAR cmd[Buffers];
WCHAR user[Buffers];
WCHAR domain[Buffers];
WCHAR pass[Buffers];
// ドメイン名の取得→ここの部分が上手くいきません
CHAR domainname[MAX_COMPUTERNAME_LENGTH + 1];
DWORD Size = MAX_COMPUTERNAME_LENGTH + 1;
BOOL GetComputerNameEX(
COMPUTER_NAME_FORMAT ComputerNameDnsDomain,
LPTSTR domainname,
LPDWORD &SIZE
);
//printf(%s\n,domainname);
STARTUPINFOW si;
PROCESS_INFORMATION pi;
HMODULE hADVAPI32;
hADVAPI32 = LoadLibrary(ADVAPI32.DLL);
if(hADVAPI32 < (HINSTANCE)HINSTANCE_ERROR)
return(-3);
CreateProcessWithLogonWD = (CREATEPROCESSWITHLOGONWD)
GetProcAddress(hADVAPI32,CreateProcessWithLogonW);
if ( CreateProcessWithLogonWD == NULL )
return(-2);
//UserName,Domain,Program,PassWord
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,administrator,-
1,user,sizeof user);
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,domainname,-1,domain,sizeof
domain);
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,E:\\setup.exe,-
1,cmd,sizeof cmd);
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pass,-1,pass,sizeof pass);
それで成功してるんですか?
コンパイルエラーになる気がする。
というか、GetComputerNameEx が呼び出されてません。
msi のインストールプログラム作って、サーバーから配布するようにした方がいいんじ
ゃないですか。