/* ファイル書き込み権限確認モジュール Copyright(C) SekiSekki Version:1.0.0 Windowsの各種ファイルへの書き込みができるかどうか確認するモジュールです。 ※ライセンス表示 当ソースコードのライセンス表示は以下のとおりです。 ライセンスは3条項BSDライセンスに相当します。 (凡例: #著作権表示 *本条件 +免責条項) ----------------------------------------------------------------------- # Copyright (c) 2020,SekiSekki All rights reserved. ソースコード形式かバイナリ形式か、変更するかしないかを問わず、 以下の条件を満たす場合に限り、再頒布および使用が許可されます。 * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、 および下記免責条項を含めること。 * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、 上記の著作権表示、本条件一覧、および下記免責条項を含めること。 * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または 販売促進に、SekiSekki(SekiSekki.net)の名前またはコントリビューターの名前を 使用してはならない。 + 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」 提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する 適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。 著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為で あるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、 本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、 使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない) 直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、 一切責任を負わないものとします。 ----------------------------------------------------------------------- */ /*-------HDL 説明事項------------ %dll filewritechk ファイル書き込み権限確認モジュール Windowsの各種ファイルへの書き込みができるかどうか確認するモジュールです。 %port Win %author Copyright(C) SekiSekki %url https://sekisekki.net/ %note 当モジュールをcommonフォルダにコピーして、#include でインクルードすることで使用可能。 commonフォルダ内にこのファイルが存在するとき、HSP Docs Libraryに自動的に命令が登録されます。 実行ファイルのあるディレクトリにHSPCMP.dllを設置する必要があります。 %group 外部拡張モジュール */ #module #defcfunc fileaccess_check str p1 /*---------HDL 説明事項---------- %index fileaccess_check ファイル書込アクセス権限の確認 %inst 概要 ファイル書き込みのアクセスができるかどうかを確認します。 %prm (str P1) P1:書き込み可能かどうかを調べるファイル名 val:戻り値 int:0 書込不可能 またはファイルが存在しない int:1 書込可能 %sample ;サンプルスクリプト #include "filewritechk.hsp" FP="C:\\windows\\explorer.exe" exist FP mes "書き込みが禁止されているファイルの場合" mes "ファイルパス:"+FP mes "ファイルサイズ:"+strsize+" " mes "書き込み権限:"+fileaccess_check(FP) mes FP="C:\\windows\\system.ini" exist FP mes "書き込みできるファイルの場合" mes "ファイルパス:"+FP mes "ファイルサイズ:"+strsize+" " mes "書き込み権限:"+fileaccess_check(FP) mes FP="nofile.txt" exist FP mes "存在しないファイル名の場合" mes "ファイルパス:"+FP mes "ファイルサイズ:"+strsize+" " mes "書き込み権限:"+fileaccess_check("nofile.txt") %href exist bsave notesave %-------------------*/ #include "kernel32.as" #define GENERIC_WRITE 0x40000000 #define GENERIC_READ 0x80000000 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define OPEN_EXISTING 3 s=0 fn=p1 CreateFile fn,GENERIC_READ+GENERIC_WRITE,7,varptr(s),OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 st=stat if stat>=0:CloseHandle st:return 1 return 0 #global