Pliki tymaczasowe a windows xp z ograniczeniami

0

witam, mam problem gdyż pisze aplikacje która musi działac także na xp na koncie z ograniczeniami, moja aplikacja tworzy sobie pliki tymczasowe do obróbki na Dysku C i działa na nich, niestety otrzymuje Odmowe dostępu, w więc przechodząc do meritum sprawy, w jakich lokalizacjach można używać aby program działał poprawnie? gdzie można zapisywac a gdzie nie?

0

Pobierz katalog TEMP ze zmiennych środowiskowych.

0

a gdzie moge zapisać plik konfiguracyjny?

0

Najlepiej w katalogu z programem lub rejestrze...

0

Tylko problem w tym że nie wiem gdzie stworzyc katalog z programem, bo na C:/ odmowa dostępu , a do rejetru nie mam dostępu (odmowa dostępu).

0

LOCALAPPDATA=C:\Users\NAZWA_UŻYTKOWNIKA\AppData\Local
oczywiście odczytujesz ten LOCALAPPDATA ze zmiennych środowiskowych.

0

Ok, przyda sie. A czy jest możliwość uruchamiania programu razem z systemem? pomijająć wpisy rejestru?

0

Jaki serwis, nie rozumiem tej odpowiedzi.

0
tomek322 napisał(a)

Jaki serwis, nie rozumiem tej odpowiedzi.

Więc więcej czytaj, niż pytaj; Usługi systemu Windows (ang. Services) często w żargonie informatycznym zwane są serwisami.

0

Ok, z tym dałem sobie rade. A ostatnim problem jaki wywołał na mnie przymus kompatybilności z kontami ograniczonymi, jest niedziałanie fukncji shellexecute, ma ktoś pomysł jak wywołać inny program z parametrem?

0

może zrób skrót wklej go do autostartu i tam pozmieniaj parametry - nie wiem czy to Ci się uda ale możesz spróbować

0

A da sie uruchomić WinExec z parametrami? albo jakis przykład CreateProcess , nic konkretnego nie moge wygooglowac

0

ShellExecute(Handle, 'open', 'cmd.exe',PChar(adres13), nil, SW_SHOW);
WinExec('cmd',SW_SHOW);
No nie wiem jak dodac parametr adres13 do Winexec'a

0

No kurcze, jak by tutaj dodać parametry, to przecież tak trudne, wręcz niemożłiwe, co nie? Ogarnij się i pomyśl chwilę samodzielnie. Co za problem dodać spację i po spacji parametrty? Zresztą nie powinno się ślepo wierzyć WinExec. Funkcja ta jest obsłiugiwana ze względu na wsteczną kompatybilnośc, ale lepiej użyć CreateProcess. Na przykład tak jak poniżej.

function ExecNewProcess(ProgramName : string; CmdShow : LongWord) : DWORD;
var
  SI : TStartupInfo;
  PI : TProcessInformation;
begin
  ZeroMemory(@SI, SizeOf(SI));
  SI.cb := SizeOf(SI);
  SI.dwFlags := STARTF_USESHOWWINDOW;
  SI.wShowWindow := CmdShow;
  CreateProcess(nil, PChar(ProgramName), nil, nil, False, 0, nil, nil, SI, PI);
  Result := PI.dwProcessId
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1