現在ログインしているユーザーと異なる権限でプログラムを実行したい場合、
GUI上で右クリックで別のユーザーとして実行で実行できます。
コマンドライン上からもRUNAS.EXEを使用すると実行できます。
runas /netonly /user:administrator "notepad.exe"
なお、runasを実行するためには、RunAS Serverが起動している必要があります。
下記のプログラムでインストーラを起動すれば、権限のないユーザーにもAdministratorsなどの権限でプログラムを起動することができます。
このページの管理人はプログラミングは初心者です。使用の結果については一切責任を持ちません。
また、内容への突っ込みもご遠慮ください。
コマンドライン上からもRUNAS.EXEを使用すると実行できます。
runas /netonly /user:administrator "notepad.exe"
なお、runasを実行するためには、RunAS Serverが起動している必要があります。
下記のプログラムでインストーラを起動すれば、権限のないユーザーにもAdministratorsなどの権限でプログラムを起動することができます。
#include "stdafx.h" #include <windows.h> #include <string.h> #define Buffers 0x200 #define LOGON_WITH_PROFILE 0x00000001 typedef BOOL (WINAPI *CREATEPROCESSWITHLOGONWD)(LPCWSTR lpUsername, LPCWSTR lpDomain,LPCWSTR lpPassword,DWORD dwLogonFlags, LPCWSTR lpApplicationName,LPWSTR lpCommandLine, DWORD dwCreationFlags,LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); CREATEPROCESSWITHLOGONWD CreateProcessWithLogonWD = NULL; int main(int argc, char* argv[]) { WCHAR cmd[Buffers]; WCHAR user[Buffers]; WCHAR domain[Buffers]; WCHAR pass[Buffers]; 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); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"UserName",-1,user,sizeof user); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"Domian",-1,domain,sizeof domain); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"Program.exe",-1,cmd,sizeof cmd); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,"Password",-1,pass,sizeof pass); si.cb = sizeof(si); si.lpReserved = NULL; si.lpDesktop = NULL; si.lpTitle = NULL; si.dwFlags = 0; si.cbReserved2 = 0; si.lpReserved2 = NULL; if ( CreateProcessWithLogonWD(user,domain,pass,LOGON_WITH_PROFILE,NULL,cmd, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP | CREATE_SEPARATE_WOW_VDM, NULL,NULL,&si,&pi) == FALSE ){ printf("実行エラー\n"); return(-1); } return 0; }注意事項
このページの管理人はプログラミングは初心者です。使用の結果については一切責任を持ちません。
また、内容への突っ込みもご遠慮ください。