Det er Windows 7 her på min maskine. Men det skulle gerne være sådan at det kan køre på alle versioner fra XP og og.
Jeg har læst lidt om, at man kan ændre rettighederne på undermapper i ProgramData, så alle brugere kan skrive i dem (og deres filer), men hvordan gør man det i et setup-projekt i VS2008?
Jeg har desuden fundet noget om, at man kan sætte hvilken rettighed programmet ønsker, i manifest-filen, og den burde så kunne køre med flere rettigheder end standard, og dermed kunne skrive i ProgramData?
Jeg har to EXE-filen. Den ene er det omtalte program, der skal kunne skrive i XML filen.
Det andet er en, der skal sættes til at køre som scheduled task. Denne skal bare kunne læse XML filen, hvilket ikke er et problem.
Dette vil bevirke at Mit GUI program, der skal skrive til ProgramData, vil spørge om det må lave ændringer på computeren.
Herefter kan det godt skrive til filen.
Men jeg kom lige i tanke om, at det andet program, der skal køre som scheduled task, også har brug for at kunne skrive, da det skal skrive i en log-fil.
Og her sidder der jo ikke nogen bruger klar til at trykke "Yes" :-(
Jeg vil mene, at du har de problemer fordi det helst ikke *skal* være muligt for dig :)
Har du overvejet at lave 'all-users' settings'ne som readonly i din app.config og så lave en separat settings-fil til hver bruger, som så kan overskrive standardinstillingerne.
Du får god hjælp til dette hvis du bruger de indbyggede Settings i dit projekt.
Problemet er, at ved normal drift, skal programmet bare køre som scheduled task.
Der bør dog være mulighed for at starte det fra f.eks. kommandolinie, så man kan teste.
Ligemeget hvem man kører det som, skal det læse/skrive i samme XML og log-fil. Det havde jeg egentlig troet at CommonApplicationData (c:\ProgramData på Win7) var beregnet til.
Jeg tror ikke jeg kan bruge settings, da det er to EXE-filer der skal læse samme fil. Ellers var det ideelt. Men hvad vi jeg lægger det i brugeren Application Data? Er der så skriverettighed som default?
Ja - men det er lavet for dig i Settings. Der sætter du også op hvad default-værdier er - og hvor værdierne skal gemmes (user/application).
Du kan få dem til at læse samme settings - hvis det er samme exe-fil.
Så du kan lave en en parameter der skal med når det kører som kommandolinie - og hvis ikke du får denne parameter med, starter du bare op som windows forms.
Det var da en idé. Jeg tror relativt nemt jeg kan lave dem til én EXE. Det ville bare være nemmere hvis jeg kunne bruge min XML-fil, da det er rimeligt komplekse data der ligger.
Ah. Det var fordi jeg ikke skrev AccessRule'n tilbage med SetAccessControl.
Det så bare ud som om det kunne lade sig gøre, fordi Jeg manuelt havde sat rettigheder på den ovenliggende mappe.
Hvis jeg kalder SetAccessControl, får jeg godt nok en fejl hvis jeg har "asInvoker" som requestedExecutionLevel.
Min løsning lige nu er, at mit GUI-program har "highestAvailable" som requestExecutionLevel, hvorved det beder om højere rettigheder ved opstart, og dette program skal man starte én gang først. Her stiller den AccessControl til Modify for "BUILTIN\Users", og brugeren kan så rette i XML-filen.
Herefter er der også skriveadgang for det program, der kører som scheduled task med requestedExecutionLevel sat til "asInvoker", da alle brugere nu har skriverettigheder til mappen.
Det er ikke en optimal løsning, men det var det bedste jeg lige kunne komme på for at have et fælles sted hvor begge programmer kan skrive, ligemeget hvilken bruger de kører under.
Mvh. Kenneth.
Synes godt om
Ny brugerNybegynder
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.