1

いつもお世話になっております。

いつものごとくあまりWinActorに関係ない(こともない?)質問です。

現在稼働中のシナリオで、あるフォルダへのショートカットを作成する処理があります。

このショートカット作成は自作のスクリプトで実装しており、

あれやこれやした後に以下の処理を行っています。

Set shell = WScript.CreateObject("WScript.Shell")
Set shortCut = shell.CreateShortcut(scPath)

昨日このシナリオがエラーを起こしたので原因を調査してみると

Set shortCut = shell.CreateShortcut(scPath) の行で失敗していることが分かりました。

解決策を検索していると、CreateShortcutは260バイトの制限があるよ、という記事を見つけました。

https://www.google.com/search?q=createshortcut+文字数制限

エラー発生時、scPathの中身は182文字、260バイトでした。

1文字削って259バイトにすると正常終了したので、バイト数制限が問題だと判断しております。

Windowsの制限として、パス長の制限を解除していない限りは260文字の制限があるというのは知っていたのですが

上記の260バイト制限は知りませんでした。

https://learn.microsoft.com/ja-jp/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

<追記>

ここでいう260文字は半角・全角問わずだそうです。

https://www.attend.jp/innerstaff_181113

<追記終わり>

ここで本題ですが、この260バイトの制限というのはCreateShortcutメソッドが持つ制限なのか、WScriptが持つ制限なのか

それとも他の要因によるものなのか、仕様をご存じであれば教えていただけないでしょうか。

いくつかのライブラリでWscript.shellを呼び出している処理は見かけるので、場合によってはそれらのライブラリを使用する際も文字数/バイト数を気にしないといけなくなることを懸念しています。

(ちなみに管理者権限が無いため、パス長の制限解除はできません。(HKEY_LOCAL_MACHINEに値を書き込めない))

この質問は解決済みのためクローズされています。
茄子天 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。