Python WindowsError: [Error 5] åkomst nekad

Permalänk
Medlem

Python WindowsError: [Error 5] åkomst nekad

Hej,

Har stött på lite problem, försöker ändra namn på en fil som befinner sig i "C:\Program Files\" men får nekad åtkomst (Error 5) går det att komma runt detta på något sätt?

Så här ser min kod ut:

self.kodiSkinPath = xbmc.translatePath("special://skin/") def showVidOsdFix(self): if xbmcvfs.exists(os.path.join(self.kodiSkinPath, 'xml/')): x = 'xml' elif xbmcvfs.exists(os.path.join(self.kodiSkinPath, '720p/')): x = '720p' elif xbmcvfs.exists(os.path.join(self.kodiSkinPath, '1080i/')): x = '1080i' elif xbmcvfs.exists(os.path.join(self.kodiSkinPath, '16x9/')): x = '16x9' if ADDON.getSetting('start_video_minimalized') == 'false': try: f = os.path.join(self.kodiSkinPath, x, 'DialogSeekBar.xml') f2 = os.path.join(self.kodiSkinPath, x, 'DialogSeekBar.disabled') os.rename(f, f2) except: deb('IOError: [Errno 5] Permission denied') finally: None else: try: f = os.path.join(self.kodiSkinPath, x, 'DialogSeekBar.xml') f2 = os.path.join(self.kodiSkinPath, x, 'DialogSeekBar.disabled') os.rename(f2, f) except: deb('IOError: [Errno 5] Permission denied') finally: None

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

Om du inte redan provat det, kan det fungera att köra scriptet som administratör?

Permalänk
Medlem
Skrivet av keyless:

Om du inte redan provat det, kan det fungera att köra scriptet som administratör?

Det är det jag helst vill undvika, att köra scriptet som admin fungerar prima men jag vill inte starta det som admin var gång.

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

Du kanske kan lägga till rättigheter för användaren som ska köra scriptet,

vet inte riktigt hur det fungerar i Windows men du borde kunna ge läs/skrivrättigheter till enkilda filer och mappar till en specifik användare.

Permalänk
Medlem

Att skriva till \Program Files kräver normalt sett admin, så alternativet är nog att andra rättigheter.

Visa signatur

- none -

Permalänk
Medlem

Kan man inte tvinga att ändra filnamnet i Python? Allt annat är inte relevant känns det som.

Skickades från m.sweclockers.com

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

Formulera om din fråga, det går nog inte att komma undan att ändra rättigheter utan något fult hack

https://mywiki.wooledge.org/XyProblem

Permalänk
Hedersmedlem

Om du inte ska köra som en användare med rättigheter att skriva där (dvs admin) så måste du istället ge din användare rättigheter.
Högerklicka på mappen (self.kodiSkinPath) i utforskaren -> egenskaper -> Säkerhet. Lägg till din användare och ge de rättigheter som krävs.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem
Skrivet av Thomas:

Om du inte ska köra som en användare med rättigheter att skriva där (dvs admin) så måste du istället ge din användare rättigheter.
Högerklicka på mappen (self.kodiSkinPath) i utforskaren -> egenskaper -> Säkerhet. Lägg till din användare och ge de rättigheter som krävs.

Jag vill kunna ge rättigheterna via scriptet då det inte ska köras lokalt.

Tanken är att använda något i stil med os.chmod men får det inte att fungera.
https://docs.python.org/3/library/os.html

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Hedersmedlem

Om du ska ändra rättigheter på något du inte redan har rättigheter till så måste programmet ha administratörsrättigheter; det går inte att komma runt på något (vettigt) OS. I de fall det går är det ett säkerhetshål som behöver patchas.

Om det gick så skulle vilket program som helst kunna modifiera andra program, läsa andra användares privata filer, lägga in malware i Windows-mappen och så vidare.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem
Skrivet av skyw00lker:

Formulera om din fråga, det går nog inte att komma undan att ändra rättigheter utan något fult hack

https://mywiki.wooledge.org/XyProblem

Tack, ibland blir det lättare att hitta en annan väg.

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B