自Windows 10創建者更新以來,您可以在創建符號鏈接時啓用開發者模式以規避管理員權限。現在,我能夠創建一個使用mklink這樣的符號鏈接:Windows 10創作者更新中的python符號鏈接
os.system('mklink %s %s' %(dst, src))
希望很明顯,DST是目標符號鏈接路徑,SRC是符號鏈接的源文件。雖然它似乎可以正常工作,但如果它失敗,則不會發生錯誤,這使得確保每個符號鏈接成功更困難。我可以在每個符號鏈接後檢查路徑是否存在,但這比try/except子句效率低。還有什麼看起來像一個命令外殼窗口(?),每次都會彈出並快速關閉 - 而且當你符合很多文件時,這真的很煩人......
所以,我一直在嘗試其他選項我發現堆棧溢出像這樣:How to create symlinks in windows using Python?不幸的是,CreateSymbolicLinkW命令似乎不適合我...我也發現這個:OS.symlink support in windows它出現的地方你需要調整組策略編輯器;但是,顯然仍然需要管理員組中的用戶以管理員身份運行該進程,即使您使用符號鏈接權限明確設置了該用戶。
與Windows 10的創造者更新,有一個在CreateSymbolicLink API(SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)的新dwflag提及您可以看到,這裏的參考:symlinks windows 10
使用ctypes的東西是一有點在我的頭上,所以我想知道是否有人知道:我可以使用新的dwflag嗎?我如何使用它?它是否會在沒有以管理員身份運行進程時運行
我使用Autodesk Maya,所以我被困在python 2.7選項中......我沒有嘗試啓動Maya作爲管理員,所以我不知道這是否可行,但它看起來像一個相當惱人的箍跳過即使它...我感謝您可以給任何幫助
'os.symlink'還不支持'SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE'。但是,Python 2中的這個函數在Windows上是不可用的。如果您有PyWin32可用,您可以調用['win32file.CreateSymbolicLink'](http://docs.activestate.com/activepython/2.6/pywin32/win32file__CreateSymbolicLink_meth.html)並手動傳入標誌值(2)。記住指出目標是何時是目錄(1),在這種情況下,「標誌」需要兩個值,例如, '2 | 1'。 – eryksun
我目前無法訪問pywin32 ...我試圖在這個'kdll = ctypes.windll.LoadLibrary(「kernel32.dll」)中使用標誌失敗; kdll.CreateSymbolicLinkW(dst,src,2)'抱歉格式不正確......無法弄清楚如何放下這兩行以便它們各自擁有自己的行 –
使用'kernel32 = ctypes.WinDLL('kernel32', use_last_error =真)'。然後,如果調用失敗,可以通過'raise ctypes.WinError(ctypes.get_last_error())'來引發一個準確的異常。 – eryksun