アカウント名:
パスワード:
Build 14972以降とか言われても、まだ(PCでは)Insider Preview出てないだろ! と思ったが、窓の杜の情報 [impress.co.jp]によるとBuild 14971ですでにサポートされていたらしいので試してみたところ、たしかに開発者モード有効なら特権不要でシンボリックリンクを作成できた。それどころかBuild 14965ですでにサポートされていたようだ。Build 14393 (Anniversary Update)ではまだ特権が必要だったことも確認。
なおSYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグはBuild 14971でもまだ実装されていないらしく、フラグなしで普通に作成できた一方、フラグを指定するとERROR_INVALID_PARAMETERになった。Build 14972でわざわざフラグを追加したということは、互換性に問題が出たのだろうか(ERROR_PRIVILEGE_NOT_HELDになることを期待するアプリか何かがあったとか)。
あと「Windows 7では特権不要だった」「Windows 8/8.1では特権不要だった」「mklinkが自主規制していただけ」等々の怪情報が飛びかっているので念のため確認しておいたが、やはりWindows 7でもWindows 8.1でもCreateSymbolicLink関数を直接使っても特権は必要だった(Windows 8は環境がないので未確認)。
Build 14986が来たので、動作を確認してみた。
CreateSymbolicLinkはblog記事通り、SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグの指定が必要になった。開発者モードが無効だとフラグを指定してもERROR_PRIVILEGE_NOT_HELDになる。
なおCreateSymbolicLinkを使わずFSCTL_SET_REPARSE_POINTで直接シンボリックリンクのデータを書き込んで作成することは従来通り可能で、開発者モードが有効なら特権も不要になっていた。こちらの方法で作成する場合、特権は持っているだけではダメで自分でAdjustTokenPrivilegesで有効にする必要があったから、SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグは内部的に特権の有効化をスキップしているのだろう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
検証してみた (スコア:1)
Build 14972以降とか言われても、まだ(PCでは)Insider Preview出てないだろ! と思ったが、窓の杜の情報 [impress.co.jp]によるとBuild 14971ですでにサポートされていたらしいので試してみたところ、たしかに開発者モード有効なら特権不要でシンボリックリンクを作成できた。それどころかBuild 14965ですでにサポートされていたようだ。Build 14393 (Anniversary Update)ではまだ特権が必要だったことも確認。
なおSYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグはBuild 14971でもまだ実装されていないらしく、フラグなしで普通に作成できた一方、フラグを指定するとERROR_INVALID_PARAMETERになった。Build 14972でわざわざフラグを追加したということは、互換性に問題が出たのだろうか(ERROR_PRIVILEGE_NOT_HELDになることを期待するアプリか何かがあったとか)。
あと「Windows 7では特権不要だった」「Windows 8/8.1では特権不要だった」「mklinkが自主規制していただけ」等々の怪情報が飛びかっているので念のため確認しておいたが、やはりWindows 7でもWindows 8.1でもCreateSymbolicLink関数を直接使っても特権は必要だった(Windows 8は環境がないので未確認)。
Re:検証してみた (スコア:1)
Build 14986が来たので、動作を確認してみた。
CreateSymbolicLinkはblog記事通り、SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグの指定が必要になった。開発者モードが無効だとフラグを指定してもERROR_PRIVILEGE_NOT_HELDになる。
なおCreateSymbolicLinkを使わずFSCTL_SET_REPARSE_POINTで直接シンボリックリンクのデータを書き込んで作成することは従来通り可能で、開発者モードが有効なら特権も不要になっていた。こちらの方法で作成する場合、特権は持っているだけではダメで自分でAdjustTokenPrivilegesで有効にする必要があったから、SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグは内部的に特権の有効化をスキップしているのだろう。