공유 블로그

Windows 10 PRO에서 진행하였습니다.

ctypes에 windll로 해결하면 됩니다.

import os
import ctypes
import winreg

def get_desktop_path():
    """Windows 특수 폴더 API를 사용하여 바탕화면 경로 가져오기"""
    try:
        # Windows 특수 폴더 API 사용
        CSIDL_DESKTOP = 0x0000
        SHGFP_TYPE_CURRENT = 0
        
        shell32 = ctypes.windll.shell32
        buffer = ctypes.create_unicode_buffer(260)
        
        if shell32.SHGetFolderPathW(None, CSIDL_DESKTOP, None, SHGFP_TYPE_CURRENT, buffer) == 0:
            return buffer.value
        else:
            # 실패 시 레지스트리에서 확인
            with winreg.OpenKey(winreg.HKEY_CURRENT_USER, 
                                r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders") as key:
                desktop_path = winreg.QueryValueEx(key, "Desktop")[0]
                return desktop_path
    except:
        # 최후의 수단으로 USERPROFILE 사용
        # userprofile = os.environ.get('USERPROFILE', 'C:\\Users\\USER')
        return os.path.join(os.path.expanduser('~'), "Desktop")

 

만약 windll도 안될시 winreg의 레지스트리 읽어서 가져오면 됩니다.

공유하기

facebook twitter kakaoTalk naver band Copy URL

후원하기