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?
Pobierz katalog TEMP
ze zmiennych środowiskowych.
a gdzie moge zapisać plik konfiguracyjny?
Najlepiej w katalogu z programem lub rejestrze...
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).
LOCALAPPDATA=C:\Users\NAZWA_UŻYTKOWNIKA\AppData\Local
oczywiście odczytujesz ten LOCALAPPDATA ze zmiennych środowiskowych.
Ok, przyda sie. A czy jest możliwość uruchamiania programu razem z systemem? pomijająć wpisy rejestru?
Jaki serwis, nie rozumiem tej odpowiedzi.
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.
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?
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ć
A da sie uruchomić WinExec z parametrami? albo jakis przykład CreateProcess , nic konkretnego nie moge wygooglowac
ShellExecute(Handle, 'open', 'cmd.exe',PChar(adres13), nil, SW_SHOW);
WinExec('cmd',SW_SHOW);
No nie wiem jak dodac parametr adres13 do Winexec'a
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;