Как выполнить процесс, неподнятый с Delphi2007

Я разработчик в Access. Технология доступа - это приложение Windows, не предназначенное для веб-приложений. Это не внутренняя база данных, которая нужна веб-серверу. SQL Server - Express Edition (бесплатно) будет продуктом семейства Microsoft. Конечно, есть и другие подходящие условно-бесплатные продукты, вероятно, наиболее известным из которых является MySQL.

Когда требование относится к внутренним потребностям, а не к общественному мнению, но пользователи географически разделены; затем Access (и другие приложения Windows) обрабатываются на сервере удаленного рабочего стола (также называемом Terminal Services).

Другой альтернативой созданию собственного веб-приложения является использование одного из веб-сервисов, ориентированных на базу данных: Soho, QuickBase, Knack и т. Д.

6
задан Meelik 5 February 2009 в 08:18
поделиться

3 ответа

Это сообщение в блоге детализировано и полезно

http://developersoven.blogspot.com/2007/02/leveraging-vistas-uac-with-delphi-part.html

Идея состоит в том, чтобы использовать Ваше приложение с низким полномочием и COM Dll с поднятым полномочием. Затем при необходимости в повышении Вы просто разжигаете COM. Полная исходная ссылка MPLed включена в сообщение.

2
ответ дан 8 December 2019 в 14:47
поделиться

Вы могли использовать CreateProcessWithLogonW () вызов API:

function CreateProcessWithLogonW(lpUsername: PWideChar; lpDomain: PWideChar;
  lpPassword: PWideChar; dwLogonFlags: DWORD; lpApplicationName: PWideChar;
  lpCommandLine: PWideChar; dwCreationFlags: DWORD; lpEnvironment: Pointer;
  lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo;
  var lpProcessInformation: TProcessInformation): BOOL; stdcall;
  external 'advapi32.dll' name 'CreateProcessWithLogonW';



procedure RunAs(AUsername, APassword, ADomain, AApplication: string);
const
  LOGON_WITH_PROFILE = $00000001;
var
  si: TStartupInfo;
  pi: TProcessInformation;
begin
  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := SW_NORMAL;
  ZeroMemory(@pi, SizeOf(pi));

  if not CreateProcessWithLogonW(PWideChar(WideString(AUsername)),
    PWideChar(WideString(ADomain)), PWideChar(WideString(APassword)),
    LOGON_WITH_PROFILE, nil, PWideChar(WideString(AApplication)),
    0, nil, nil, si, pi)
  then
    RaiseLastOSError;

  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
end;
1
ответ дан 8 December 2019 в 14:47
поделиться

Отметьте уверенный, если это поможет, но существует подобные вопросы здесь в c#.net, но он может дать Вам некоторый ключ к разгадке, где посмотреть, или Вы могли попробовать порт к Delphi.

и просто подсказка пытается не иметь обновление/установку/установку на имя файла приложения, поскольку перспектива автоматически добавит значок безопасности к там exe's.

1
ответ дан 8 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: