Avatar billede Slettet bruger
31. august 2008 - 11:41 Der er 10 kommentarer og
1 løsning

sti problem xp versa vista

Laver man en fast sti i xp virker det perfekt, men i Vista 32 sker der ikke noget.

Har det noget med at vista definere programmer som program files?
Avatar billede pidgeot Nybegynder
31. august 2008 - 12:16 #1
Jeg tror hellere du lige må uddybe dit problem lidt mere - for du har vel ikke skrevet 'C:\Programmer' direkte et sted i din kildekode.

Hvis du mener at du forsøger at skrive en fil til et sted i Program Files, men ikke kan finde den bagefter, så er det sandsynligvis Folder Redirection du oplever (hvilket optræder når UAC er slået til, men man ikke kører programmet som administrator). Det bevirker at filen bliver gemt et andet sted, men bliver betragtet som liggende i Program Files når et ikke-admin program spørger til den.

Hvis det er tilfældet, så var det måske på tide at få skrevet programmet om, eller, hvis der er et kraftigt behov for at bruge Program Files, kræve admin-rettigheder - det er længe siden det betragtedes som en god ting at et program skrev noget i dets egen mappe (her ses selvfølgelig bort fra hvis du har en opdateringsfunktion i dit program, hvor man i stedet kræver admin-rettigheder) I stedet bør man placere indstillinger, m.v. i brugerens mappe
Avatar billede Slettet bruger
31. august 2008 - 13:31 #2
Du har ret jeg laver en sti der hedder: c:\programmer\mit software\program\backup

Hvis jeg bruger stien: c:\program files\mit software\program\backup

Så virker backup'en heller ikke i Vista.
Avatar billede pidgeot Nybegynder
31. august 2008 - 14:09 #3
Hvis du vil lave en backup til din programmappe, så skal du køre programmet som administrator. Ellers ryger den nemlig over i C:\Users\brugernavn\AppData\Local\VirtualStore\Program Files\mit software\program\backup. Afhængigt af dit program vil en bedre placering nok være et sted under brugerens profil (typisk hans Application data, men det kan som sagt variere lidt - måske er det bedre at lade brugeren vælge).

Sådan har man faktisk skullet skrive sine programmer i mange år, aht. muligheden for at bruge flere profiler på samme computer, men mange har ikke gjort det fordi de har været vant til at alle alligevel er administratorer og dermed kan skrive overalt.

Hvis du ikke vil/kan lave om på det sted du gemmer til, og ikke vil køre som administrator, så har du to muligheder:

1) Rediger NTFS-rettighederne på mappen så den aktuelle bruger må skrive der (det skal gøres som admin)
2) Installer en service der kører som Lokalt system og giver dig mulighed for at bruge den til at lave din backup (den har de nødvendige rettigheder til at det bliver placeret det rigtige sted)

Husk i øvrigt på at det ikke kun er nye filer der bliver gemt et andet sted. Du får heller ikke lov til reelt at redigere eksisterende filer; de nye udgaver bliver også "ofre" for Folder redirection.
Avatar billede Slettet bruger
31. august 2008 - 16:54 #4
Tak for hjælpen jeg kan se nu at backup netop skriver til

C:\Users\brugernavn\AppData\Local\VirtualStore\Program Files\mit software\program\backup

smid et svar...
Avatar billede pidgeot Nybegynder
31. august 2008 - 17:11 #5
Værsgo.

Igen, det er betydeligt mere brugervenligt helt at undgå det problem (på den ene eller anden måde).
Avatar billede hrc Mester
31. august 2008 - 20:15 #6
sharon: Hvordan kan du håbe på et svar med et så tåget spørgsmål? Hvad med at fylde lidt boller på suppen fra starten af? Det sparer tid for os alle.
Avatar billede Slettet bruger
31. august 2008 - 23:09 #7
hrc...jeg fik faktisk info omkring hvor ens backup gemmes i Vista selvom stien er fastlagt i programmet. Den sti placering var jeg ikke klar over.

Jeg har tidligere postet det spørgtsmål uden en reel løsning og her fik jeg da en placering.

men her er den kode jeg bruger til xp:

var
  FOS :TSHFileOpStruct;
  AppPath : string;
function DoCopy(FromPath, ToPath : string) : boolean;
begin
  with FOS do                //kopier databasen til biblioteket backup
  begin
    Wnd  := 0;
    wFunc := FO_COPY;
    pFrom := pchar(FromPath+#0);
    pTo  := pchar(ToPath);
    fFlags:= FOF_NOCONFIRMATION;
  end;
  Result:=SHFileOperation(FOS)=0;
end;

begin
  AppPath:=ExtractFilePath(Application.ExeName);
  if DoCopy(AppPath + '\vinlist*',AppPath + '\backup') then
    if DoCopy(AppPAth + '\history*', AppPath + '\backup') then
    begin
    CopyDir('c:\programmer\mit program\images','c:\programmer\mit program\backup\images');
      showmessagepos('dataerne er kopieret til backup',400,400);
Backup.Close;

I xp virker det perfekt men i Vista placeres den et helt andet sted.
Avatar billede tolderlund Nybegynder
01. september 2008 - 13:27 #8
Det virker kun i xp hvis man kører med administrator rettigheder, ellers får man ikke lov til at skrive i c:\programmer. I vista er rettighederne skærpet yderligere.
Det er derfor en dødssynd at skrive i c:\programmer, det har altid været imod microsofts retningslinjer, det er kun installationsprogrammer der bør gøre det.
Avatar billede Slettet bruger
01. september 2008 - 14:06 #9
ok tolderlund

Men det ville jo være rart at man kunne skrive til samme bib som exe filen eller i en mappe i samme bib ligger i.
Avatar billede tolderlund Nybegynder
01. september 2008 - 16:14 #10
Det et jo et sikkerhedsspørgsmål at programmet ikke bare kan skrive i c:\programmer.
Men det er måske rart nok - for den programmør der ikke kender retningslinjerne eller ikke gider følge dem.
Avatar billede Slettet bruger
01. september 2008 - 16:40 #11
ok er helt med tolderlund "S"

Smider lige et spørgsmål senere om brugerbestemt placering af backup...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester