/*
ファイル書き込み権限確認モジュール
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