質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1098閲覧

【Python】WindowsのPhysicalDriveに対して読み書きをしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/01 19:25

前提・実現したいこと

Python 3.7.xで開発しています。
WindowsのPhysicalDriveに対して読み書きをしたいです。

該当のソースコード

読み込み

Python

1with open("\\.\PHYSICALDRIVE3", mode="rb+") as f: 2 while True: 3 print(f.read(1)) 4 f.seek(1, 1)

書き込み

Python

1with open("\\.\PHYSICALDRIVE3", mode="wb+") as f: 2 while True: 3 f.write(bytes(0)) 4 f.seek(1, 1)

試したこと

管理者権限でスクリプトの実行
読み込みはできているように思えますが、一部 [Errno 13] Permission denied[Errno 22] Invalid argument などがドライブによって発生している状況です。
while True: にしていますが、実際はIOErrorで止まるようにしています)

別の方法も含めて、教えてください。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/06/01 22:33

PhysicalDriveとは具体的にどこ、なんでしょうか。 実際に動かすことのできるサンプルを提示してください。 また、エラーは、出たそのママをコピペで提示してください
退会済みユーザー

退会済みユーザー

2020/06/01 23:42

ありがとうございます。 PhysicalDriveとは、具体的にWindows上で認識されている物理ドライブ(パーティションなどではない)のことと認識しております。 以下のリンクに説明がございます。 https://msmania.wordpress.com/tag/physicaldrive/ \\\\.\\PHYSICALDRIVE0 はCドライブと同義だと思いますので、動かすことはできると思いますが、内容を操作する可能性がありますので、VM等で実行されることをお勧めします。 エラーですが、 「[Errno 13] Permission denied: '\\\\.\\PHYSICALDRIVE0' File "", line 1, in <module> with open("\\\\.\\PHYSICALDRIVE0", mode="rb+") as f:」 がその一つです。 ([Errno 22] Invalid argument に関しては別のマシンで発生しましたので現在、再現できません) よろしくお願いいたします。
dodox86

2020/06/02 00:04

管理者権限でコマンドプロンプトを起動して実行してみてください。そうだとしても、Windowsの起動ドライブに相当するドライブだと何かのプロセスが握っていて、やはりPermission Deniedになるかもしれませんが。コメントでご自身で書かれているので理解されていると思いますが、セクター相当に直接書き込む操作となり、起動しなくなる恐れがあるのでくれぐれも気を付けてください。
退会済みユーザー

退会済みユーザー

2020/06/02 00:16

dodox86さん、ありがとうございます。 起動ドライブ以外でもPermission deniedとなるケースがあり、あまり関係はありませんがRufusのようにドライブ自体をほかのプロセスからアクセスできないようにロックをかける処理というのはPythonで実装できるものなのでしょうか。 ドライブを直接Pythonで操作するという情報がかなり少なく、困っているところであります。 ご存じでしたら、情報をいただけると幸いです。
dodox86

2020/06/02 00:24

> 起動ドライブ以外でもPermission deniedとなるケースがあり、あまり関係はありませんがRufusのようにドライブ自体をほかのプロセスからアクセスできないようにロックをかける処理というのはPythonで実装できるものなのでしょうか。 確認ですが、それは本質問とは関係ないですよね? Pythonを実行するときのユーザー権限を高いものにして、Windows APIのCreateFileを直接呼べるような実装で排他的にオープンすればあるいはできると思います。ですが、他の普通のプロセスの実行に支障が出るでしょうね。既に、他のドライブでもPermission Denied(Access Denied)になっているのであれば、ファイルシステムのドライバーやフィルタードライバー、関連するWindowsサービスプロセスがオープン済み、ロック済みなのかもしれません。Windows Defenderや他のセキュリティソフトも関係しているかもしれません。あくまで推測ですが。
dodox86

2020/06/02 00:27

> ドライブを直接Pythonで操作するという情報がかなり少なく、困っているところであります。 普通、やりませんからね。バイナリを扱うのも面倒ですし。一般的にはC/C++でネイティブコードでやります。
dodox86

2020/06/02 00:36

> ドライブ自体をほかのプロセスから なお、\\.\PHYSICALDRIVE は実際のファイルではなくデバイスドライバーとやり取りするための論理的なデバイスファイル名のはずなので、一般のファイルに適用するCreateFileの個別のオプションは効かないかもしれません。(その可能性大) 開いたままであれば、通常は別のプロセスからはDENIEDとなります。試していなく、あくまで推測からのコメントです。以上です。
退会済みユーザー

退会済みユーザー

2020/06/02 00:40

> 確認ですが、それは本質問とは関係ないですよね? ごもっともです。場違いなところで質問してしまい、申し訳ありませんでした。 > 一般的にはC/C++でネイティブコードでやります ありがとうございます。行き詰ったら、Cで書き直したいと思います。 その他の情報も分かりやすく非常に助かります。ご丁寧に回答くださり、ありがとうございました。
dodox86

2020/06/02 00:47

勢い余って(?)回答に近いかたちでコメントしてしまいましたが、当初は「管理者権限でPythonを起動してみたらどうなりますか?」との質問への確認のつもりでした。(<私自身は実際に確認するつもりは無かったため) 一定の結論を得たら自己解決で回答を閉じるか、あるいは引き続き別回答者さんからの回答をお待ちください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問