从外部应用程序向Web浏览器添加书签

时间:2012-05-30 09:09:33

标签: c# powershell

有没有人知道是否可以从外部应用程序向Web浏览器(Safari,IE,FF,Chrome,Opera)添加书签?

3 个答案:

答案 0 :(得分:4)

对于 IE

您需要在此处创建链接文件:

C#

   Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

Powershell

 [Environment]::GetFolderPath( [System.Environment+SpecialFolder]::Favorites)

<强>铬:

您需要以json格式文件bookmarks添加条目(没有扩展名):

Win7上的

C:\Users\<YOURUSERNAME>\AppData\Local\Google\Chrome\User Data\Default\

<强>火狐:

书签存储在SQLite

../Application Data/Mozilla/Firefox/Profiles/{your firefox profile}/places.sqlite 

使用System.Data.SQLite您可以尝试添加链接,但我无法帮助您。

无法帮助您使用Safari和Opera

答案 1 :(得分:2)

在Powershell V2 ISE(x86)中,此代码将列出系统中的所有特殊文件夹,甚至this -

$objShell = New-Object -com "Wscript.Shell"
$objShell.SpecialFolders | WHERE {$_.ToString() -match "Fav"}

然后您可以访问&amp;操纵C:\ Users \ username \ Favorites文件夹。我不知道这是否会扩展到所有浏览器[IE除外]

答案 2 :(得分:0)

这是我想出的从PowerShell向Chrome添加书签的解决方案:

$fileBookmarks="$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Bookmarks"
$dataBookmarks=Get-Content $fileBookmarks -Encoding UTF8| Out-String |ConvertFrom-Json
function createNewChromeBookmark ($Bookmarks, [string]$BookmarkName, [string]$BookmarkURL) {
    function getBookmarkIDs($object){
        $object | ForEach-Object{
            "{0:0000}" -f [int]($_.id);
            if([bool]($_.PSobject.Properties.name -match "children")){
                GetBookmarkIDs($_.children);
            }
        }
    };
    $nextBookmarkID = [int](getBookmarkIDs -object $Bookmarks.roots.bookmark_bar|Sort-Object -Descending|Select-Object -First 1) + 1
    $currentChomeTime=[System.DateTimeOffset]::Now.ToUnixTimeMilliseconds()*10000;
    $newBookmark= [PSCustomObject]@{
        date_added=$currentChomeTime
        guid=[guid]::NewGuid()
        id=$nextBookMarkID
        name="$BookmarkName"
        type="url"
        url="$BookmarkURL"
    }
    return $newBookmark;
}
$newBookmark = createNewChromeBookmark -Bookmarks $dataBookmarks -BookmarkName "Your Bookmark Name" -BookmarkURL "https://[Your URL Here]";
$dataBookmarks.roots.bookmark_bar.children += $newBookmark;
$dataBookmarksJSON = ConvertTo-Json -InputObject $dataBookmarks -Depth 200
Set-Content -Path $fileBookmarks -Value $dataBookmarksJSON -Encoding UTF8