問題タブ [win32exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2503 参照

c# - アクセスが拒否され、Windows ユーザーの一時フォルダーでアーカイブを抽出しようとしました

Windows ユーザーの一時ディレクトリ (C:\Documents and Settings\User\Local Settings\Temp )、私の c# アプリで Process を使用します。

.NETのprcoessオブジェクトを掘り下げると、エラーコード5のwin32Exceptionが表示されるので、「アクセスが拒否されました」が原因でプロセスがエラーを返すと思います。

他の場所で同じことをすることは以前はうまくいったので、おそらくそれは私がすべきではないことだと思いますか? (%TEMP% でファイルを使用するプロセスを実行しています) おそらく何らかの方法でセキュリティを渡す必要がありますか?

0 投票する
4 に答える
30788 参照

c# - Win32Exception このコマンドを処理するのに十分な記憶域がありません

MaxToの自動クラッシュ コレクションを通じて、次のクラッシュ レポートを取得しました。

別のスタックトレース:

この最新のスタック トレースでは、MaxTo への参照はまったくなく、発生したクラッシュの 90% は上記のようなスタック トレースによるものです。

ネットを読んでみると、変数を解放または破棄するのを忘れた場合、このエラーは通常発生することがわかりました。WndProc時々問題が通過するように見える私の を調べると、オブジェクトへの参照に固執する単一の場所が見つかりません。1 つを除くすべての変数は WndProc に対してローカルであるため、メソッドの終了時にガベージ コレクションを実行する必要があります。

プログラムを数日間実行しても、エラーを再現できませんでした。

私の推測では、システムの断片化されていないメモリまたは GDI ハンドルが不足しているということですが、どこにも確認できません。このエラーに関する適切なドキュメントはないようです。

他に何が考えられますか?このエラーを防ぐために何かできることはありますか?

更新:適切な解決策がないため、質問はより多くのスタック トレースで再開されました。無視するだけでは問題は解決しません。

0 投票する
3 に答える
10969 参照

c# - Win32Exception のスロー

私は最近、Win32 API との相互運用に関連する多くのコードを作成しており、Windows API 関数の呼び出しによって発生するネイティブ (アンマネージ) エラーを処理する最善の方法は何かを考え始めています。

現在、ネイティブ関数の呼び出しは次のようになっています。

例外を発生させる行は、次のように同等に書き直すことができます。

Messageこれで、設定された Win32 エラー コードと、(通常は) 人間が判読できるエラーの説明をException オブジェクトのプロパティとして適切に含む例外がスローされるという点で、これは問題ありません。ただし、これらの例外のすべてではないにしても、少なくとも一部を変更/ラップして、もう少しコンテキスト指向のエラー メッセージ、つまり、ネイティブ コードがどのような状況でもより意味のあるエラー メッセージが表示されるようにすることをお勧めします。使用されています。これにはいくつかの代替案を検討しました。

  1. のコンストラクタでカスタム エラー メッセージを指定するWin32Exception

    /li>
  2. を別の Exception オブジェクトにラップしてWin32Exception、元のエラー コードとメッセージの両方が保持されるようにします (Win32Exceptionは現在InnerException、親例外の です)。

    /li>
  3. Win32Exception別のものをラッパー例外として使用することを除いて、2 と同じです。

  4. 2 と同じExceptionですが、ラッパー例外として から派生したカスタム クラスを使用します。

  5. 適切な場合に親として BCL (Base Class Library) 例外を使用することを除いて、2 と同じです。InnerExceptionこの場合、 をに設定することが適切かどうかWin32Exceptionはわかりません (おそらく、低レベルのラッパーの場合ですが、Win32 相互運用が舞台裏で行われていることを明らかにしない高レベル/抽象化されたインターフェイスではありませんか?)

基本的に私が知りたいのは、.NET で Win32 エラーを処理する際に推奨される方法は何ですか? さまざまな方法でオープンソース コードで行われているのを見てきましたが、設計ガイドラインがあるかどうかに興味がありました。そうでない場合は、ここであなたの個人的な好みに興味があります. (おそらく、上記の方法のどれも使用していませんか?)

0 投票する
6 に答える
39600 参照

c# - Win32Exception: ディレクトリ名が無効です

Vista を実行し、UAC が有効になっている 2 台の異なるコンピューターで管理者権限を持つ別のユーザーとしてプロセスを実行しようとしていますが、そのうちの 1 つで「ディレクトリ名が無効です」という Win32Exception が発生します。

私のコードの何が問題なのか誰か教えてもらえますか?

アップデート

上記のコードを実行するアプリケーションには、requireAdministrator 実行レベルがあります。作業フォルダーを「Path.GetDirectoryName(myFile)」「New System.IO.FileInfo(myFile).DirectoryName」に設定しました

0 投票する
8 に答える
31405 参照

c# - System.ComponentModel.Win32Exception: 操作は正常に完了しました

Windows フォーム アプリを長時間実行しているときに、この例外が発生することがあります。

これの原因は何ですか?

0 投票する
1 に答える
2419 参照

c# - イベントログ、なりすまし、アクセス拒否Win32Exception

専用アカウント(SDDLポリシーを使用)を使用して、イベントログエントリをカスタムイベントログに書き込みます。このために、私はWindowsImpersonationContextを使用し、LogonUserでトークンを取得します。

このコードはイベントログエントリを生成しますが、Win32Exceptionも発生します。

これで、偽装行の後にThread.Sleep(500)を配置すると、例外がなくなります。

この例外の原因と、アクセス拒否の例外があってもイベントログエントリが書き込まれるのはなぜですか?

編集:そして、私はそれを使用する前に、関連するログでイベントソースを登録しました。メッセージを短くするために、小さなコードスニペットのみを含めました。

0 投票する
3 に答える
2777 参照

.net - HRESULT 例外

エラー コードが説明されているリストはありますか。Eks: HRESULT: 0x81070215 は、何が間違っているかについて何も教えてくれませんか?

0 投票する
3 に答える
715 参照

c# - .NET が内部的にエラーをクリアしないのはなぜですか?

次のシナリオを実行しています。

pass は false ですが、重複して実行されているため、予想されます。
問題は、Marshal.GetLastWin32Error() が ERROR_IO_PENDING を返さず、ERROR_ALREADY_EXISTS を返すことです。ファイルを作成したときにエラーが表示されなかったので、これは奇妙です。今、私はアクセスできないように見えるハンドルを閉じる方法を見つけようとしている、または少なくともこれが起こっている理由についての説明を得ようとしています。

編集:わかりました、問題を解決しました。問題の原因はわかっています。

どうやら、内部的に AppendAllText 呼び出しがエラーを引き起こしているようです。このログ呼び出しの後にエラーをリセットする必要がありますか? フレームワークがその関数の内部動作で低レベルの呼び出しをリセットしないことを知っておくと、これは役に立ったと思います。ああ、あなたは毎日何か新しいことを学びます。

私が持っている新しい質問は、この呼び出しの後に低レベルのエラーをリセットする必要があるか、または出力をログに記録する他の方法があるか (log4Net などのサードパーティ ツールを使用したり、Debug.Trace 出力に夢中になったりしないでください) でしょうか? 基本的に、Marshal.GetLastWin32Error(); に影響を与えない追加用のファイルを開く方法。出力。

0 投票する
1 に答える
1856 参照

wcf - Win32Exception @ WCF サービスの ServiceHost.Open()

私が書いている広範な WCF サービス インフラストラクチャの BDD 仕様の作成に取り組んでいます。ServiceHost.Open() の呼び出しを含む、私が書いた各仕様に気付きました。その行の実行には 2 ~ 6 秒かかります (仕様を追加するにつれて、時間は増え続けます)。このメソッドが呼び出されると、Win32Exception がスローされることに気付きました。

ServiceModel の構成は次のとおりです。

注: Http.sys を構成し、http://+:80/calculator/を http 名前空間の除外として追加したので、これは問題の一部ではありません。

このエラーは、Windows 7 Ultimate システムで最も深刻です。Vista Ultimate システムでは、パフォーマンス ヒットはそれほど大きくないように見えますが、ServiceHost.Open() は実行に費やされる時間の大部分を占めています。URL が localhost の場合になぜ問題になるのかまったくわかりません。ループバック インターフェイスが最も高速であると期待しています。

0 投票する
3 に答える
2955 参照

c# - PrintDocument.Print() が Win32Exception をスローする

次のコードから奇妙な例外が発生します。

msdn のドキュメントによると、最後の行は「ハンドルが無効です」という詳細を含む Win32Exception をスローしています。スローする必要がある唯一の例外は、プリンターが見つからないことです。例外は、ある種のドライバー/非フレームワークの例外であるようです。

プリンター (Lexmark T640、プリンター ポートに直接印刷するようにセットアップ) を選択すると、コードは正常に印刷されますが、アクセスできる他の 2 つのプリンター (別の T640、または Dell カラー) のいずれかを選択すると、コードが失敗します。他の 2 台のプリンターは、中央のプリント サーバーを介して印刷するように設定されていますが、これで違いが生じるとは思いませんでした。誰でも私に何か指針を与えることができますか?

編集: printDialog.PrintQueue.Fullname で試してみましたが、動作に違いはありません。ガベージ プリンター名を代入すると、予想どおり InvalidPrinterException がスローされ、プリンターが見つかったことを示しますが、失敗したようです。