VB6コードをC#(.NET 4.5.2)に移行してgethostname
メソッドを呼び出しているコードに貼り付けられました。名前。私が今までに見つけたすべてのコードサンプルは、 this codeを指しています。そして、私はC#のgethostname
メソッドを成功裏にPInvoke
できなかったので、それに代わるものがあるかどうかを尋ねることはできません。C#でWSOCK32.DLL経由でコンピュータ名を取得
この
[DllImport("WSOCK32.DLL", SetLastError = true)]
internal static extern long gethostname(string name, int nameLen);
string host = string.Empty;
var res = gethostname(host, 256);
は、次のエラーで失敗します。
ランタイムは、致命的なエラーが発生しました。エラーのアドレスは、スレッド0xd88の0x6a13a84eにありました。エラーコードは0xc0000005です。このエラーは、CLRまたはユーザーコードの安全でない部分または検証不能な部分のバグである可能性があります。このバグの一般的な原因には、COM-interopまたはPInvokeのユーザーマーシャリングエラーがあり、スタックが破損する可能性があります。
私はまたSystem.Environment.MachineName
または「COMPUTERNAME」環境変数を使用して読んが、私は結果がどのようなgethostname
メソッドが返すよりも、どのように異なるかに興味があります。
どのようなオプションがありますか?
- 私は、64ビットシステム上で開発していますが、私はそれについてはドキュメントを発見したので、これは
WSOCK32.DLL
での作業に影響する場合/方法を知りません。
これをピンボケしないでください。 .netライブラリを使用します。 –
@DavidHeffernanもう少し詳しくお聞かせください。私は最初のメッセージにいくつかの可能なオプションを挙げましたが、結果が常に同じかどうかはわかりません。 – dvlsc
私はいくつかの研究があなたに何を知る必要があるかを教えてくれると期待しています。 Websearchは私をここに連れて行きましたhttp://stackoverflow.com/questions/1768198/how-do-i-get-the-computer-name-in-net –