[fpc-pascal]version differences

Michael Van Canneyt michael.vancanneyt at wisa.be
Fri Mar 19 15:32:33 CET 2004


On Fri, 19 Mar 2004, [iso-8859-2] Pápai András wrote:

>
> Hi!
> I recently upgraded fpc on my computer (1.0.4 -> 1.0.10). Now some programs
> doen't work correctly. No problems with compilig, no run-time errors, but
> the program doesn't work like before. (Win32 platform).
>
> I attached a source (poweroff.pas). Compiling with 1.0.4, it works as I
> want.
> With 1.0.10 (and 1.0.6) some API functions return an error.
> LookupPrivilegeValue: 203, "ENVVAR_NOT_FOUND"
> AdjustTokenPrivileges: 1300, "NOT_ALL_ASSIGNED"
>
> I couldn't find the reason in the docs.
> Can someone help me, please?

I don't know what the reason is, but I suspect the large_integer (64 bits).
In each case, using 1.9.X, your sources didn't compile at all.
I changed them and now the program works correctly as far as I can
see (at least, it reports no error).

Michael.
-----------------------------------------------------------------------
{$mode objfpc}

program PowerOff;
{.$APPTYPE GUI}

uses windows;

var
  hToken: handle;
  Privileges: TOKEN_PRIVILEGES;
  Shutdown_LUID: int64;

Const
  ShutDownPriv : Pchar = 'SeShutdownPrivilege';

begin

  if not OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES, at hToken) then
    writeln('OPT: ',GetLastError:5);
  if not LookupPrivilegeValueA(Nil,ShutDownPriv,Shutdown_LUID) then
    writeln('LPV: ',GetLastError:5);
  with Privileges do
  begin
    PrivilegeCount := 1;
    Privileges[0].LUID := Shutdown_LUID;
    Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  end;
  if not AdjustTokenPrivileges(hToken,false, at Privileges,0,Nil,Nil) then
    writeln('ATP: ',GetLastError:5);
  //ExitWindowsEx(EWX_POWEROFF,0);

end.




More information about the fpc-pascal mailing list