2014-11-22 100 views
3

我編寫了很多東西來管理我公司的計算機。我經常需要將快捷方式添加到用戶的個人啓動文件夾中(沒有GPO)。創建啓動文件夾 - Windows

默認情況下,Windows 8/8.1沒有個人啓動文件夾。
它的位置是C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\

這是很容易創建該文件夾,但它需要一個desktop.ini文件進去,用正確的內容,進行本地化(否則它會顯示「啓動」任何語言)的名稱。

什麼是「官方」的方式來創建此文件夾?
或者什麼是官方添加東西的方法?
我寧願PowerShell或批處理命令,但無論可靠的意思是好的。

回答

4

我想你可以爲這個特殊的文件夾都與ComObject東西:

$startup = (New-Object -ComObject Shell.Application).NameSpace(0x07) 

順便說一句,如果我在運行框中輸入shell:startup + [R)我Win 8.1系統,它指引我到我的個人啓動文件夾(C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)。

+1

Win8和Win2012用戶在程序創建之前沒有啓動文件夾(或者可能是預成像/預安裝的,但有了Windows庫,沒有啓動文件夾)。在這種情況下,shell:startup無處不在,並且不會創建文件夾。 – 2014-11-23 21:39:35

+1

你給的命令完美無缺。測試Win8和Win2012。當啓動文件夾不存在時,它立即創建。非常感謝 ! – 2014-11-23 21:48:29

2

據我所知,沒有可靠的方法來做到這一點。

您可以使用[environment]::getfolderpath("Startup")獲取路徑,但如果文件夾已創建,則返回的字符串爲空。我不知道任何API條目來創建它。

所以,你必須手動創建它:

  1. 查看前命令返回任何東西(如果是,僅僅創建快捷方式)
  2. 自己創建的啓動文件夾。使用[environment]::getfolderpath("StartMenu")並添加\startup的路徑
  3. 然後創建Desktop.ini文件和自己填充它
  4. 並更新註冊表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders(我沒有檢查,如果這是正確的地方。[environment]::getfolderpath("Startup")必須返回正確的值)

更新:我剛剛發現SHGetKnownFolderPath API允許如果需要的話(與dwFlags中)來創建所需的文件夾。我不擅長PowerShell,所以我不知道如何調用它。也許有人可以給出更好的答案。

+1

SHGetKnownFolderPath似乎是正確的做法。我嘗試從PowerShell使用它,但沒有找到如何。我想我必須提出一個新問題。 – 2014-11-23 15:20:34