Example #1
0
            // TODO: nothing is calling this
            // TODO: sandboxing should be a profile-level option
            public static void SafeDestroySandbox(WinAPI.SandboxApi.Sandbox sandbox)
            {
                SafeLoadSID(sandbox);

                // delete profile
                DeleteProfile(sandbox.SID, null, null);

                // delete user account
                NetUserDel(null, sandbox.UserName);
            }
Example #2
0
 internal static void MouseActionViaSendInput(WinAPI.WindowHook.MSLLHOOKSTRUCT hookStruct, int X, int Y)
 {
     MouseActionViaSendInput((MouseEventFlags)hookStruct.flags, hookStruct.time, X, Y, hookStruct.mouseData);
 }
Example #3
0
            public static Process LaunchProcess(
                WinAPI.SandboxApi.Sandbox sandbox,
                string applicationPath,
                string commandLine,
                string workingDirectory)
            {
                if (sandbox.Process != null)
                {
                    return sandbox.Process;
                }

                var startupInfo = new STARTUPINFO
                {
                    cb = Marshal.SizeOf(typeof(STARTUPINFO)),
                };

                var processInformation = new PROCESS_INFORMATION
                {
                };

                var result = CreateProcessWithLogonW(
                    sandbox.UserName,
                    string.IsNullOrEmpty(Environment.UserDomainName)
                        ? Environment.MachineName
                        : Environment.UserDomainName,
                    sandbox.Password,
                    LogonFlags.LOGON_WITH_PROFILE,
                    applicationPath,
                    commandLine,
                    CreationFlags.CREATE_NEW_CONSOLE,
                    (uint)0,
                    workingDirectory,
                    ref startupInfo,
                    out processInformation);

                if (!result)
                {
                    ("CreateProcessWithLogonW failed with err 0x" + Marshal.GetLastWin32Error().ToString("X")).LogCritical();
                }

                sandbox.Process = result
                    ? Process.GetProcessById(processInformation.dwProcessId)
                    : null;

                var processHandle = sandbox.Process.Handle;

                sandbox.Process.Exited += (s, e) =>
                    {
                        // !!!
                    };

                return sandbox.Process;
            }