2016-08-28 4 views
1

QB64でこのプログラムを使用してファイルを暗号化しようとしています。QB64でファイルを暗号化する方法

実際にはファイルを暗号化せず、常に正常に戻ります。どうして?

DECLARE LIBRARY 
    FUNCTION EncryptFile (f$) 
    FUNCTION DecryptFile (f$, BYVAL f&) 
END DECLARE 
PRINT "Enter filename"; 
INPUT f$ 
IF f$ <> "" THEN 
    f$ = f$ + CHR$(0) 
    x = EncryptFile(f$) 
    IF x = 0 THEN 
     PRINT "Error encrypting file." 
    ELSE 
     PRINT "File encrypted." 
    END IF 
END IF 
END 
+1

明らかにあなたがそれを正しく呼んでいる、それはあなたのC++のコードが動作しない理由の問題ですので、なぜQB64コードが動作しないのか。 –

+0

Nevermind。ターゲットファイルは暗号化されています。暗号化したユーザーには透過的で、バイナリのようなテキストは表示されません。 – eoredson

+0

私はQB64暗号化ユーティリティを書いています。このユーティリティはhttp://www.qb64.net/forum/index.php?action=dlattach;topic=13798.0;attach=4633にあります。 – eoredson

答えて

0

ソリューションは、このようなファイル名の暗号化の状態を検出することでした:

REM checks encryption status of a filename 
DECLARE DYNAMIC LIBRARY "advapi32" 
    FUNCTION FileEncryptionStatusA% (f$, f&) 
END DECLARE 
DO 
    PRINT "Filename"; 
    INPUT f$ 
    IF f$ = "" THEN END 
    x = FileEncryptionStatusA(f$, f&) 
    IF x = 0 THEN 
     PRINT "Error accessing file." 
    END IF 
    IF x THEN 
     SELECT CASE f& 
      CASE 0 
       PRINT "File can be encrypted." 
      CASE 1 
       PRINT "File is encrypted." 
      CASE 2 
       PRINT "File is system." 
      CASE 3 
       PRINT "File is root." 
      CASE 4 
       PRINT "File is system directory." 
      CASE 5 
       PRINT "Encryption status unknown." 
      CASE 6 
       PRINT "File system does not support encryption." 
      CASE 7 ' reserved 
      CASE 8 
       PRINT "File is read-only." 
     END SELECT 
    END IF 
LOOP 
END 
関連する問題