請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索
回覆 7則 瀏覽 23310篇
Line

[碼源] Windows 預設路徑修改器

該用戶從未簽到

升級   0%

發表於 2012-9-4 10:38 | 顯示全部樓層 |閱讀模式
本帖最後由 rictirse 於 2015-5-29 12:09 編輯

Windows 預設路徑修改器
適用 xp vista w7

  1. #include <GUIConstants.au3>

  2. Const $cnt = 18
  3. Global $Input[$cnt],$BUT_1[$cnt],$BUT_2[$cnt],$BUT_3[$cnt]
  4. Global $i,$Var
  5. Global $Height[2] = [20,25],$Width[5] = [70,400,25,50,50]
  6. Global $x[5] = [12,$Width[0]+20,$Width[0]+$Width[1]+25,$Width[0]+$Width[1]+$Width[2]+30,$Width[0]+$Width[1]+$Width[2]+$Width[3]+35],$y = 30
  7. Global $FormWidth =  $x[4]+65, $FormHeight = 43+($cnt*$y)
  8. Global $FormName = "修改路徑"
  9. Global $GUI_BUT_Text[3] = ["...","Apply","Default"]
  10. Global $RegName[$cnt] = [ "AppData", "Cache", "Cookies", "Desktop", "Favorites", "History", "Local AppData", "Local Settings", "My Pictures", "NetHood", "Personal", "PrintHood", "Programs","Recent", "SendTo", "Start Menu", "Startup", "Templates"]
  11. Global $DefaultRoute[$cnt] = ["%USERPROFILE%Application Data", "%USERPROFILE%Local SettingsTemporary Internet Files", "%USERPROFILE%Cookies", "%USERPROFILE%桌面", "%USERPROFILE%Favorites", "%USERPROFILE%Local SettingsHistory", "%USERPROFILE%Local SettingsApplication Data", "%USERPROFILE%Local Settings", "%USERPROFILE%My DocumentsMy Pictures", "%USERPROFILE%NetHood", "%USERPROFILE%My Documents", "%USERPROFILE%PrintHood", "%USERPROFILE%「開始」功能表程式集", "%USERPROFILE%Recent", "%USERPROFILE%SendTo", "%USERPROFILE%「開始」功能表", "%USERPROFILE%「開始」功能表程式集啟動", "%USERPROFILE%Templates"]

  12. GUICreate ( $FormName, $FormWidth, $FormHeight, Default, Default,1)

  13. For $i=0 to $cnt-1
  14.         GUICtrlCreateLabel ( $RegName[$i],  $x[0], 13+($i*$y), $Width[0], $Height[0])
  15.         $Input[$i] = GUICtrlCreateInput ( RegRead ( "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders", $RegName[$i]), $x[1], 10+($i*$y), $Width[1], $Height[0])
  16.         $BUT_1[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[0], $x[2], 7+($i*$y), $Width[2], $Height[1])
  17.         $BUT_2[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[1], $x[3], 7+($i*$y), $Width[3], $Height[1])
  18.         $BUT_3[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[2], $x[4], 7+($i*$y), $Width[4], $Height[1])
  19. Next

  20. GUISetState (@SW_SHOW)
  21. WinSetOnTop ( $FormName, "", 1)


  22. While 1
  23.         $nMsg = GUIGetMsg()
  24.         For $i = 0 To $cnt-1
  25.                 If $nMsg = $BUT_1[$i] Then
  26.                         SelectFolder($i)
  27.                 EndIf
  28.                 If $nMsg = $BUT_2[$i] Then
  29.                         apply($i)
  30.                 EndIf
  31.                 If $nMsg = $BUT_3[$i] Then
  32.                         ReDefault($i)

  33.                 EndIf
  34.         Next
  35.         
  36.         Switch $nMsg
  37.                 Case $GUI_EVENT_CLOSE
  38.                         Exit
  39.         EndSwitch
  40. WEnd


  41. Func SelectFolder($i)
  42.         WinSetOnTop ( $FormName, "", 0)
  43.         $Var = FileSelectFolder ( "請選擇目錄", "", 1, RegRead ( "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders", $RegName[$i]))
  44.         WinWaitClose ( "瀏覽資料夾", "請選擇目錄")
  45.         WinSetOnTop ( $FormName, "", 1)
  46.         If $Var = "" Then
  47.                 Error1()
  48.                 GUICtrlSetData ( $Input[$i], RegRead ( "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders", $RegName[$i]))
  49.         Else
  50.                 If FileExists ($Var) = 1 Then
  51.                         GUICtrlSetData ( $Input[$i], $Var)
  52.                 Else
  53.                         Error2()

  54.                 EndIf
  55.         EndIf
  56. EndFunc

  57. Func apply($i)
  58.         If FileExists ($Var) = 1 Then
  59.                 RegWrite ( "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders", $RegName[$i],"REG_SZ", GUICtrlRead ($Input[$i]))
  60.         Else
  61.                 Error2()
  62.                 Return
  63.         EndIf
  64.         Reboot()
  65. EndFunc

  66. Func ReDefault($i)
  67.         RegWrite ( "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders", $RegName[$i], "REG_SZ", $DefaultRoute[$i])
  68.         Reboot()
  69. EndFunc

  70. Func Reboot()
  71.         GUISetState (@SW_HIDE)
  72.         If  MsgBox ( 36, $FormName,"已修改完成"&@CR&"重新啟動電腦後才會生效"&@CR&"是否馬上重新啟動") = 6 Then
  73.                 Shutdown (2)
  74.         Else
  75.                 Exit
  76.         EndIf
  77. EndFunc

  78. Func Error1()
  79.         If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then
  80.                 ToolTip (@CR&"    取消    "&@CR&" ")

  81.         Else
  82.                 ToolTip (@CR&"    取消    "&@CR)
  83.         EndIf
  84.         Sleep (1500)
  85.         ToolTip ( "")
  86. EndFunc

  87. Func Error2()
  88.         If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then
  89.                 ToolTip (@CR&"    路徑錯誤    "&@CR&" ")
  90.         Else
  91.                 ToolTip (@CR&"    路徑錯誤    "&@CR)
  92.         EndIf
  93.         Sleep (1500)
  94.         ToolTip ( "")
  95. EndFunc
複製代碼
樓主熱門主題

簽到天數: 189

該用戶今日未簽到

升級   100%

發表於 2013-1-29 00:14 | 顯示全部樓層
請問噹噹超版,如何將右上角的XX加上去
或是在下面新增一個結束按鈕
謝謝囉~

使用道具

該用戶從未簽到

升級   0%

 樓主| 發表於 2013-2-1 13:10 | 顯示全部樓層
gary8349 發表於 2013-1-29 00:14
請問噹噹超版,如何將右上角的XX加上去
或是在下面新增一個結束按鈕
謝謝囉~ ...

[code=autoit]#include <GUIConstants.au3>

Const $cnt = 18
Global $Input[$cnt],$BUT_1[$cnt],$BUT_2[$cnt],$BUT_3[$cnt]
Global $i,$Var
Global $Height[2] = [20,25],$Width[5] = [70,400,25,50,50]
Global $x[5] = [12,$Width[0]+20,$Width[0]+$Width[1]+25,$Width[0]+$Width[1]+$Width[2]+30,$Width[0]+$Width[1]+$Width[2]+$Width[3]+35],$y = 30
Global $FormWidth =  $x[4]+60, $FormHeight = 10+($cnt*$y)
Global $FormName = "修改路徑"
Global $GUI_BUT_Text[3] = ["...","Apply","Default"]
Global $RegName[$cnt] = [ "AppData", "Cache", "Cookies", "Desktop", "Favorites", "History", "Local AppData", "Local Settings", "My Pictures", "NetHood", "Personal", "PrintHood", "Programs","Recent", "SendTo", "Start Menu", "Startup", "Templates"]
Global $DefaultRoute[$cnt] = ["%USERPROFILE%\Application Data", "%USERPROFILE%\Local Settings\Temporary Internet Files", "%USERPROFILE%\Cookies", "%USERPROFILE%\桌面", "%USERPROFILE%\Favorites", "%USERPROFILE%\Local Settings\History", "%USERPROFILE%\Local Settings\Application Data", "%USERPROFILE%\Local Settings", "%USERPROFILE%\My Documents\My Pictures", "%USERPROFILE%\NetHood", "%USERPROFILE%\My Documents", "%USERPROFILE%\PrintHood", "%USERPROFILE%\「開始」功能表\程式集", "%USERPROFILE%\Recent", "%USERPROFILE%\SendTo", "%USERPROFILE%\「開始」功能表", "%USERPROFILE%\「開始」功能表\程式集\啟動", "%USERPROFILE%\Templates"]
GUICreate ( $FormName, $FormWidth, $FormHeight)

For $i=0 to $cnt-1
        GUICtrlCreateLabel ( $RegName[$i],  $x[0], 13+($i*$y), $Width[0], $Height[0])
        $Input[$i] = GUICtrlCreateInput ( RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $RegName[$i]), $x[1], 10+($i*$y), $Width[1], $Height[0])
        $BUT_1[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[0], $x[2], 7+($i*$y), $Width[2], $Height[1])
        $BUT_2[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[1], $x[3], 7+($i*$y), $Width[3], $Height[1])
        $BUT_3[$i] = GUICtrlCreateButton ( $GUI_BUT_Text[2], $x[4], 7+($i*$y), $Width[4], $Height[1])
Next

GUISetState (@SW_SHOW)
WinSetOnTop ( $FormName, "", 1)


While 1
        $nMsg = GUIGetMsg()
        For $i = 0 To $cnt-1
                If $nMsg = $BUT_1[$i] Then
                        SelectFolder($i)
                EndIf
                If $nMsg = $BUT_2[$i] Then
                        apply($i)
                EndIf
                If $nMsg = $BUT_3[$i] Then
                        ReDefault($i)
                EndIf
        Next

        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd


Func SelectFolder($i)
        WinSetOnTop ( $FormName, "", 0)
        $Var = FileSelectFolder ( "請選擇目錄", "", 1, RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $RegName[$i]))
        WinWaitClose ( "瀏覽資料夾", "請選擇目錄")
        WinSetOnTop ( $FormName, "", 1)
        If $Var = "" Then
                Error1()
                GUICtrlSetData ( $Input[$i], RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $RegName[$i]))
        Else
                If FileExists ($Var) = 1 Then
                        GUICtrlSetData ( $Input[$i], $Var)
                Else
                        Error2()
                EndIf
        EndIf
EndFunc

Func apply($i)
        If FileExists ($Var) = 1 Then
                RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", $RegName[$i],"REG_SZ", GUICtrlRead ($Input[$i]))
        Else
                Error2()
                Return
        EndIf
        Reboot()
EndFunc

Func ReDefault($i)
        RegWrite ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", $RegName[$i], "REG_SZ", $DefaultRoute[$i])
        Reboot()
EndFunc

Func Reboot()
        GUISetState (@SW_HIDE)
        If  MsgBox ( 36, $FormName,"已修改完成"&@CR&"重新啟動電腦後才會生效"&@CR&"是否馬上重新啟動") = 6 Then
                Shutdown (2)
        Else
                Exit
        EndIf
EndFunc

Func Error1()
        If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then
                ToolTip (@CR&"    取消    "&@CR&" ")
        Else
                ToolTip (@CR&"    取消    "&@CR)
        EndIf
        Sleep (1500)
        ToolTip ( "")
EndFunc

Func Error2()
        If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then
                ToolTip (@CR&"    路徑錯誤    "&@CR&" ")
        Else
                ToolTip (@CR&"    路徑錯誤    "&@CR)
        EndIf
        Sleep (1500)
        ToolTip ( "")
EndFunc[/code]

點評

3Q~ 已收下囉^^ (也來研究一下 (呵呵  發表於 2013-2-1 13:15

使用道具

簽到天數: 1448

該用戶今日未簽到

升級   0%

發表於 2015-6-1 09:11 | 顯示全部樓層
rictirse版大,這個程式碼看起來,僅僅寫入regedit吧?並沒有幫忙把檔案給複製過去,能否也把檔案給複製過去呢,重點在於,COPY是無法copy權限的問題吧?
必須要用robocopy c:\Users\ e:\ /e /copyall /xj /xf c:\Users\desktop.ini /xd "Default" "Public" "%其他用戶帳號%" 這串代碼才能把權限也複製過去,我的想法對嗎?

使用道具

該用戶從未簽到

升級   0%

 樓主| 發表於 2015-6-1 09:54 | 顯示全部樓層
bear1alex1 發表於 2015-6-1 09:11
rictirse版大,這個程式碼看起來,僅僅寫入regedit吧?並沒有幫忙把檔案給複製過去,能否也把檔案給複製過 ...

對這只是一個改路徑 owner 跟 robocopy 或 xcopy 那也只是一兩行的function而已修改起來不困難..

使用道具

簽到天數: 1448

該用戶今日未簽到

升級   0%

發表於 2015-6-1 10:18 | 顯示全部樓層
rictirse 發表於 2015-6-1 09:54
對這只是一個改路徑 owner 跟 robocopy 或 xcopy 那也只是一兩行的function而已修改起來不困難..
...

可是小弟遇到的重點是
1. 如果要遷移的帳號目錄是登入使用中的系統管理員的話, 則必需建立及登入使用另一個臨時系統管理員帳號, 否則登入使用中的部分檔案文件因為系統使用中而不能完全複製成功。
2. 在 系統管理員身分 使用 xcopy 或 File Explorer 中複製帳號目錄貼上的話, 帳號目錄權限會錯誤, 導致用戶部分功能錯誤及保密讀寫權限缺失


那麼如何能在目前登錄的使用者環境下,不登出使用別的使用者情況下能達到權限複製嗎?或是能在下次重開機登陸前執行嗎?目前試了丟到regedit的run底下,欲讓他登陸前執行,不過看起來可能無法達到,run好像在登入使用者之後才執行的,還是會遇到NTUSER.DAT檔案系統使用中無法複製

使用道具

該用戶從未簽到

升級   0%

 樓主| 發表於 2015-6-1 10:34 | 顯示全部樓層
bear1alex1 發表於 2015-6-1 10:18
可是小弟遇到的重點是
1. 如果要遷移的帳號目錄是登入使用中的系統管理員的話, 則必需建立及登入使用另一 ...

使用中user 的 file會被lock是正常的
你現在要做的事情我還是不太懂
可以條列式的詳細敘述嗎?
你想達到什麼,目前使用什麼方法

使用道具

簽到天數: 1448

該用戶今日未簽到

升級   0%

發表於 2015-6-1 10:49 | 顯示全部樓層
本帖最後由 bear1alex1 於 2015-6-1 10:54 編輯
rictirse 發表於 2015-6-1 10:34
使用中user 的 file會被lock是正常的
你現在要做的事情我還是不太懂
可以條列式的詳細敘述嗎?

真不好意思,講得太籠統了
1.我想把以下這些東西整個轉移到D碟,連帶檔案也過來,又不用登出使用者,辦的到嗎?

2.不用一個一個選取路徑,能否先選要搬的東西,譬如選桌面、文件、最愛、圖片、影片,選完一次按一個路徑,這5個東西連檔案與登陸值一併修改

微軟的方式是,點文件內容按位置移動,會連同檔案跟路徑一併過去,小弟想要如此功能,但能否一次過去,不用每個每個逐一修改→文件→內容→位置→移動→確認


PS.小弟發現AU3有個AU3Recorde功能,這個好像不錯耶,不過弄了幾次都不會動,(小弟對AU3是新手,請見諒),如果可以的話,用這個來實現以上動作似乎也不錯喔


使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-12-2 05:37

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表