• ベストアンサー

WNetAddConnection2で困っています

お世話になります。 VC6.0のサービス内でのネットワーク接続関数:WNetAddConnection2で困っています。 パラメータ NETRESOURCE nr;の // ローカルドライブ名 nr.lpLocalName = ""; // 共有フォルダ名 nr.lpRemoteName = "\\\\saver\\c$"; がエラーになります 「2 番目の引数を 'char [6]' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照)指示された型は関連がありません; 変換にはreinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。」 (unsign short *)のセット方法は下記のように直したのですが // 資源の種類 nr.dwType = RESOURCETYPE_DISK; // ローカルドライブ名 nr.lpLocalName = (unsigned short*)""; // 共有フォルダ名 nr.lpRemoteName = (unsigned short*)"\\\\saver\\c$"; // プロバイダー名 nr.lpProvider = NULL; ・・・ dwret = WNetAddConnection2( &nr,(const unsigned short *)"passdw",(const unsigned short *)"userid",0); コンパイルはとおったのですが 接続できません (unsign short *)のセット方法が悪いのか サービスでなければうまく動くのですが・・・。 サービスなのでデバックもよくできません アドバイス、回答、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.3

nr.lpLocalName = L""; nr.lpRemoteName = L"\\\\saver\\c$"; nr.lpProvider = NULL; dwret = WNetAddConnection2( &nr,L"passdw",L"userid",0); では? ASCII(char*)型にするなら 方法1 #define UNICODE #define _UNICODE を検索してコメントにする。 方法2 NETRESOURCEA構造体と WNetAddConnection2A関数を使う

phoo
質問者

お礼

回答、ありがとうございます。

その他の回答 (2)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

Windows 系はあまりプログラムを組まないので良く分かりませんが、Unicode を 使っているから、じゃないですか? > nr.lpRemoteName = "\\\\saver\\c$"; nr.lpRemoteName = _T("\\\\saver\\c$"); って感じではいかが? ちなみに、「型が違うよ」と言っているエラーに対して、理由も分からずキャスト をしても問題の解決になることは、ほとんどありませんよ。

phoo
質問者

お礼

回答ありがとうございます。

  • takebe
  • ベストアンサー率65% (17/26)
回答No.1

# あてずっぽうですが... サービスというのはNTとかWindows2000のサービスのことでしょうか. サービスを動かすアカウントの権限と普通のコマンドを動かすアカウントの権限が違っているため,接続ができないのかもしれません. サービスを動かすアカウントをコマンドを動かしているアカウントに変更してみたらうまく動いたりしませんかね.

phoo
質問者

お礼

早々の回答ありがとうございました。

関連するQ&A

専門家に質問してみよう