java - Kan ikke læse filen FileNotFoundException - Adgang nægtes

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får adgangen bliver nægtet, når jeg læser en fil fra mit Java-program på Windows Server 2012. Jeg har lavet denne slags ting i mange år, så jeg er ikke nybegynder. Jeg kan bare ikke finde ud af, hvad jeg 'mangler!


Her er stakken (redigeret):


Caused by: java.io.FileNotFoundException: C:/ProgramData/MyProgram/resource/file.license (Access is denied)
#0: java.io.FileInputStream.open0(Native Method)
#1: java.io.FileInputStream.open(Unknown Source)
#2: java.io.FileInputStream.<init>(Unknown Source)
#3: java.io.FileInputStream.<init>(Unknown Source)
#4: com...util.FileUtil.readFileAsString(FileUtil.java:269)


Java-programmet køres som en Windows-tjeneste ved hjælp af NSSM. Tjenesten er konfigureret til at køre som bruger 'cmb@contoso.com'. Filen 'file.license' har bruger cmb@contoso.com med 'Fuld' adgang. Domæne 'Brugere' -gruppen har Læs, Læs & Udfør perms.


Permisserne på 'C:/ProgramData/MyProgram' giver cmb@contoso.com fuld adgang.


Hvis jeg kører Process Explorer og kigger på 'java.exe' Egenskaber> Sikkerhed, ser jeg, at det viser 'CONTOSO \ cmb' som brugeren processen kører som.


Jeg forsøgte at give 'Alle' Læs, Læs & Udfør perms på C: \ ProgramData \ MyProgram og på file.license, men det havde ingen effekt.


Hvis jeg kører denne samme kode direkte, siger fra Eclipse, fungerer det fint.


ReadFileAsString-metoden:


public static String readFileAsString(String filePath) {
    if (filePath == null)
        throw new IllegalArgumentException("No file argument given");

    try {
        byte[] buffer = new byte[(int) new File(filePath).length()];
        FileInputStream f = new FileInputStream(filePath);
        f.read(buffer);
        f.close();

        return new String(buffer);
    } catch (IOException e) {
        throw new OperationFailedException(e);
    }
}


Java er 1.8\_111 fra Oracle


Proces Monitor spor er vist i screenshot:
https://drive.google.com/file/d/0B8BMXJDodRtpY19VekRaTkR5bTA/view[3]


Process Monitor sikkerhedsegenskaber af 'java.exe' screenshot:
https://drive.google.com/file/d/0B8BMXJDodRtpQko0YlVRNkZBQ1k/view[4]

Bedste reference