最新閲覧日:

お世話になります。
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 *)のセット方法が悪いのか
サービスでなければうまく動くのですが・・・。

サービスなのでデバックもよくできません
アドバイス、回答、お願いします。

A 回答 (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関数を使う
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/15 15:32

Windows 系はあまりプログラムを組まないので良く分かりませんが、Unicode を


使っているから、じゃないですか?

> nr.lpRemoteName = "\\\\saver\\c$";

nr.lpRemoteName = _T("\\\\saver\\c$");

って感じではいかが?


ちなみに、「型が違うよ」と言っているエラーに対して、理由も分からずキャスト
をしても問題の解決になることは、ほとんどありませんよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/15 15:30

# あてずっぽうですが...



サービスというのはNTとかWindows2000のサービスのことでしょうか.

サービスを動かすアカウントの権限と普通のコマンドを動かすアカウントの権限が違っているため,接続ができないのかもしれません.

サービスを動かすアカウントをコマンドを動かしているアカウントに変更してみたらうまく動いたりしませんかね.
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/15 15:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報