Erledigt! Schreib- + Leserechte unter Windows 11

Anfängerfragen zum Programmieren mit PureBasic.
EmmJott
Beiträge: 46
Registriert: 25.10.2024 12:23

Erledigt! Schreib- + Leserechte unter Windows 11

Beitrag von EmmJott »

Hallo @ all!

kann mirjemand sagen, wie man für ein bestimmtes Verzeichnis und dessen Unterverzeichnisse (und aller darin enthaltenen Dateien) Schreib- und Leserechte für den User prüft und ggf. entsprechend einstellt?
Zuletzt geändert von EmmJott am 08.08.2025 16:16, insgesamt 1-mal geändert.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Benutzeravatar
mk-soft
Beiträge: 3852
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Schreib- + Leserechte unter Windows 11

Beitrag von mk-soft »

Am besten garnicht.
Hierfür gibt es spezielle Ordner und regeln wo der Benutzer drauf zugreifen darf
Es sollten auch keine Dateien in den Programm Ordner geschrieben werden, da ein Normaler Benutzer keine Rechte dort hat.

Code: Alles auswählen

;-TOP

; Comment : Path Helper v1.04.2 by mk-soft
; Link    : https://www.purebasic.fr/english/viewtopic.php?p=562634#p562634

; Change names
CompilerIf Defined(CompanyName, #PB_Constant) = 0
	#CompanyName = "mk-soft"
CompilerEndIf

CompilerIf Defined(ApplicationName, #PB_Constant) = 0
	#ApplicationName = "MyApplication"
CompilerEndIf

; ----

CompilerIf #PB_Compiler_OS
  
  Macro CocoaString(NSString)
    PeekS(CocoaMessage(0, NSString, "UTF8String"), -1, #PB_UTF8)
  EndMacro
  
CompilerEndIf

Procedure.s GetProgramPath()
  CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
    Static bundlePath.s
    Protected bundlePathPtr
    
    If Not Bool(bundlePath)
      bundlePathPtr = CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"bundlePath")
      If bundlePathPtr
        bundlePath = CocoaString(bundlePathPtr) + "/"
      EndIf
    EndIf
    ProcedureReturn bundlePath
  CompilerElse
    ProcedureReturn GetPathPart(ProgramFilename())  
  CompilerEndIf
EndProcedure

; ----

Procedure.s GetResourcePath()
  CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
    Static resourcePath.s
    Protected resourcePathPtr
    
    If Not Bool(resourcePath)
      resourcePathPtr = CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"resourcePath")
      If resourcePathPtr
        resourcePath = CocoaString(resourcePathPtr) + "/"
      EndIf
    EndIf
    ProcedureReturn resourcePath
  CompilerElse
    ProcedureReturn GetProgramPath() + "Resources" + #PS$
  CompilerEndIf
EndProcedure

; ----

Procedure.s GetLibraryPath()
  Protected librayPath.s
  CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
    librayPath = GetProgramPath() + "Contents/Library/"
  CompilerElse
    librayPath = GetProgramPath() + "Library" + #PS$
  CompilerEndIf
  ProcedureReturn librayPath
EndProcedure

; ----

Procedure.s GetProgramDataPath()
  Protected basePath.s, subPath.s, dataPath.s
  
  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    basePath = GetHomeDirectory()
    subPath = basePath + "." + #CompanyName + #PS$
  CompilerElse
    basePath = GetUserDirectory(#PB_Directory_ProgramData)
    subPath = basePath + #CompanyName + #PS$
  CompilerEndIf
  dataPath = subPath + #ApplicationName + #PS$
  If FileSize(dataPath) <> -2
    If FileSize(subPath) <> -2
      CreateDirectory(subPath)
    EndIf
    If FileSize(dataPath) <> -2
      CreateDirectory(dataPath)
    EndIf
  EndIf
  ProcedureReturn dataPath
EndProcedure

; ----

Procedure.s GetAllUserDataPath()
  Protected basePath.s, subPath.s, dataPath.s
  
  basePath = GetUserDirectory(#PB_Directory_AllUserData)
  subPath = basePath + #CompanyName + #PS$
  dataPath = subPath + #ApplicationName + #PS$
  If FileSize(dataPath) <> -2
    If FileSize(subPath) <> -2
      CreateDirectory(subPath)
    EndIf
    If FileSize(dataPath) <> -2
      CreateDirectory(dataPath)
    EndIf
  EndIf
  ProcedureReturn dataPath
EndProcedure

; ****

CompilerIf #PB_Compiler_IsMainFile
  Debug "Program Path: " + GetProgramPath()
  Debug "Program Resources Path: " + GetResourcePath()
  Debug "Program Libraries Path: " + GetLibraryPath()
  Debug "Program Data Path: " + GetProgramDataPath()
  Debug "Program Alluser Data Path: " + GetAllUserDataPath()
CompilerEndIf

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Axolotl
Beiträge: 272
Registriert: 31.12.2008 16:34

Re: Schreib- + Leserechte unter Windows 11

Beitrag von Axolotl »

Ich brauche das zwar nicht, weil ich es so ähnlich mache wie mk-soft geschrieben hat.
Vielleicht hilft Dir das folgende weiter:
Übersicht über die Zugriffssteuerung von M$

1. Mit einem Kommandozeilen-Tool:

Code: Alles auswählen

icacls /?
icacls <folder>/<file name>

2. oder Powershell:

Code: Alles auswählen

 Get-Acl
3. Englisches Forum:
Get Process Owner, & Permissions [Win_Func]

Falls du gerne englische Texte ließt (oder DeepL bemühen möchtest): Safety in Windows
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
EmmJott
Beiträge: 46
Registriert: 25.10.2024 12:23

Re: Schreib- + Leserechte unter Windows 11

Beitrag von EmmJott »

Danke für die Hinweise. Da sich Windows dazu entschlossen hat, mich doch nicht mehr zu ärgern (zeitweise scheinbar zufällig wechselnde Zugriffsrechte für Ordner im User-Verzeichnisbaum), will ich lieber mal den Ratschlag befolgen und nicht daran rumzimmern.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Antworten