'프로그래밍'에 해당되는 글 198건
- 2007.04.25 MFC클래스별 설명
- 2007.04.16 nsis 강좌
- 2007.03.28 Environ 함수사용예시
- 2007.03.13 Visual Studio SP1 설치시간 단축하기
- 2007.03.09 간단하게? asp에서 sql DB 연결하는 법
- 2006.06.29 Activex 실행문제 2
- 2006.04.27 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)
- 2006.04.27 기존 dll 콤포넌트 사용법 2
- 2006.04.17 c# format() 합성형식지정 2
- 2006.04.15 CString , char* , BSTR 변환 2
위 링크에 가보시면 nsis 에 대한 강좌가있습니다.
원지 보기가 부담스러워서^^ 펌하였습니다.
번호 | 명칭 | 설명 | 예 |
1 | ALLUSERSPROFILE | 모든 유저의 | C:\Documents and |
2 | APPDATA | 현재 유저의 | C:\Documents and |
4 | CommonProgramFiles | 공용 프로그램 | C:\Program Files\ |
5 | COMPUTERNAME | PC에 지정된 이름 |
|
6 | ComSpec | 명령 프롬프트 | C:\WINDOWS\ |
8 | HOMEDRIVE | 기본 드라이브 | C: |
9 | HOMEPATH | 기본 폴더 | \Documents and Settings\ |
12 | LOGONSERVER | 네트워크 이름 | \\[컴퓨터명칭] |
14 | NUMBER_OF_PROCESSORS | CPU수 | 2 |
15 | OS | 운영체제 이름 | Windows_NT |
16 | Path | 자동 참조 폴더 | C:\WINDOWS\ C:\WINDOWS; |
17 | PATHEXT | 실행 가능한 | .COM;.EXE;.BAT;.CMD;.VBS; |
19 | PROCESSOR_IDENTIFIER | CPU정보 | x86 Family 15 Model 4 |
22 | ProgramFiles | 프로그램 파일 | C:\Program Files |
24 | SystemDrive | 운영체제가 설치된 | C: |
25 | SystemRoot | 운영체제가 | C:\WINDOWS |
26 | TEMP | 임시 디렉토리 폴더 | C:\DOCUME~1\[유저이름]\ |
27 | TMP | ||
28 | USERDOMAIN | 도메인 명 |
|
29 | USERNAME | 현재유저이름 |
|
30 | USERPROFILE | 현재유저의 | C:\Documents and Settings\ |
31 | windir | 윈도우즈가 | C:\WINDOWS |
Environ("windir")과 같은 형태로 사용함.
http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Takes-a-While-to-Install.aspx
상기주소로 가면 자세한 설명이 있지만
간단히 설명하자면 도스창으로 서비스팩이 있는곳으로 가서
start /wait VS80sp1-KB926605-X86-KOR.exe /quiet /L*v+ VS80sp1-KB926605-X86-KOR.log 라고
입력하면 약 30분후에 설치가 완료됩니다.
그냥 백그라운드에서 깔리는것이므로 아무런변화는 없습니다.
그렇다고 낚인건 아니구요.^^;
그냥 한서버에 IIS 와 ms-sql 를 설치하여 웹서비스를 할때
분명 DB를 연결해야한다.
일반적으로 OLE-DB 를 쓰지만 로컬이니깐 구지 연결스트링은 선언하지않고
(남들이 소스를 보면 아이피,아이디,패스워드가 노출되므로)
그냥 DSN으로 셑팅을 하면 구지 ms-sql에 sql용 아이디페스워드를 생성하지않고
로컬NT 계정으로 DB에 연결할수있다.
1. SQL Server Enterprise Manager(EM)를 여시고 서버를 확장해서 [보안]을 확장 합니다.
2. 로그인 부분에 마우스 오른쪽 버튼->새 로그인
3. 맨위 이름란 옆에 버튼을 눌러서 ISUR_XXXX 계정을 찾아서 선택하세요
4. 맨위 탭중에서 데이터베이스 액세스탭을 클릭하고
5. 데이터베이스 이름중에서 해당하는 데이터베이스명에 클릭하세요
6. 아래 역할중에 db_owner를 선택하시고 [확인] 누르시면 새로운 로그인이 만들어집니다.
7. 제어판에서 관리도구안에 데이터 원본 (ODBC)에서 DSN을 새롭게 생성한다.
8. 접근하려는 DB등을 선택하고 로컬NT계정으로 접근을 선택한다.
그리고
set db = server.CreateObject("ADODB.Connection")
conn = "DSN=XXXXXdns명"
db.open conn
이렇게 입력하면 됩니다.
개발PC에서 ActiveX를 개발하여 웹에 올리면 코드인증을 하였어도 정작 개발PC에서는
동작하지 않는 경우가 있습니다.
저도 어것때문에 길게는 6개월이상 고생했습니다.
이유는 이미 레지스트리에 등록이 되어있기 때문입니다.
인터넷을 통하여 정상적으로 ActiveX가 설치된것이 아니기 때문에
ActiveX패키징할때 설정하는 웹에서 안전부분이 아니오로 설정되어 있기
때문입니다.
그러므로 웹에서 보면 실행이 안되거나
"이 페이지의 Activex 컨트롤이 다른 부분과 상호작용하는 데 안전하지 않을 수 잇습니다.
상호 작용을 허용하시겠습니까"
라는 메시지가 뜹니다.
이문제를 해결하기 위해서 레지스트리를 강제로 변경하는 방법도 있기는 하지만...
MS기술문서를 참고하시면 해결이 가능합니다...
또 ActiveX를 수동설치하시려면 반드시 해주셔야지만 위와같은 메시지가 나타나지 않습니다...
http://support.microsoft.com/kb/q182598/
기술문서에는 OLE 자동화 형식 라이브러리 생성기가 Common\Tools\VB\Unsupprt\Typlib\ 폴더에
있다고나오지만 만일 가지고있는 CD가 VS일경우에는 CD3에 있습니다.
인터넷을 돌아다녀봐도 별다는 해결책이나 왜그러는지 잘나와있지 않습니다.
물론 외국사이트에보면 해당되는 글들이 있곤 합니다.
하지만 별다는 설명이나 해결방법을 쉽게 찾을수 없더군요.
'/xxx' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------
지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류
및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.
예외 정보: System.IO.FileNotFoundException: 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT:
0x8007007E)
소스 오류:
현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예
외의 원인 및 위치 정보를 확인할 수 있습니다.
스택 추적:
[FileNotFoundException: 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)]
System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity,
Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
+0
System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity,
StackCrawlMark& stackMark, Boolean forIntrospection) +211
System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity,
StackCrawlMark& stackMark, Boolean forIntrospection) +141
System.Reflection.Assembly.Load(String assemblyString) +25
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean
starDirective) +32
[ConfigurationErrorsException: 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean
starDirective) +596
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +3479081
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +46
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +177
System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) +267
System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean
ignoreErrors) +36
System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir,
Boolean ignoreErrors) +429
System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +73
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild,
Boolean allowCrossApp, Boolean allowBuildInPrecompile) +580
System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath
virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +93
System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext
context, Boolean allowCrossApp, Boolean noAssert) +111
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type
requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +54
System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath
virtualPath, String physicalPath) +31
System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String
requestType, VirtualPath virtualPath, String physicalPath) +40
System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String
pathTranslated, Boolean useAppConfig) +139
System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +120
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
--------------------------------------------------------------------------------
버전 정보: Microsoft .NET Framework 버전:2.0.50727.42; ASP.NET 버전:2.0.50727.42
가장 큰 문제는 이러한 오류가 너무 일반적이고 포괄적이라서
마땅히 어디다고 딱찝어낼수가 없다는 것입니다.
하지만 ASP.NET 을 사용하고
사이트전체적으로 이러한 문제점이 나온다면
가장먼저 생각해볼것이
bin에 들어있는 dll 화일들입니다.
dll 화일이 1.x 버젼에서 만들어진 dll 이라던지
문제가 있는 dll 일경우 이런 현상이 나타납니다.
일단 dll 이나 lib 화일들을 하나씩 지우거나 잠시 bin폴더에서 이동해보세요.
그러다가 사이트의 페이지가 정상적으로 나오게 된다면
그 dll 이나 lib 화일이 문제였던것입니다.
그럼 그 dll 을 사용하고 싶다면 어떻게 해야하느냐...
역어셈블링 프로그램을 통하여 1.x 버젼 dll 을 2.0 용으로 바꿔줘야됩니다.
메뉴중에 웹사이트->참조 추가->COM 에 보면 개발PC에 있는 COM들이 보입니다.
거기서 선택을 하거나 찾아보기를 통하여 DLL을 찾은후 확인을 누르시면
현재작업하고 있는 사이트의 bin에 화일이 생길겁니다.
참조하는 방법은 여러가지가 있다고 하는데
일단 그중에 하나...
bin 화일에 보면 interop.XXX.dll 식으로 화일이 있는데
앞의 interop부분은 필요없고
xxx 부분만 쓰시면 됩니다.
aspx.cs 에서
using xxx;
라구요.
아님.
aspx 에서
<%@ Import Namespace="xxx"%>
라고 쓰시구요.
다음은 사용법입니다.
aspx 나 aspx.cs 에서
xxx 만 치시면....알아서 쭈욱....그담부턴 눈치것.....
머 제 설명이 그렇지요 머...
그럼...꾸벅.
CString -> char *
{
CString str;
str = "Hello";
//char* ss = LPSTR(LPCTSTR(str)); 이방법은 안좋다고 하네요. http://cafe.naver.com/woosongbitcafe.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=123
ss = str.GetBuffer(0);
str.ReleaseBuffer();
}
char * -> CString
{
char ss[] = "Hello";
CString str;
str.Format("%s", ss);
}
BSTR -> CString
{
CString cstr;
char* pstr;
USE_CONVERSION;
pstr = OLE2A(bstr);
cstr = CString(pstr);
}
CString -> BSTR
{
BSTR bstr;
cstr = "adfg";
bstr = cstr.AllocSysString();
}
BSTR -> char*
{
BSTR bstr;
char* pstr;
pstr = OLE2A(bstr);
}
char* -> BSTR
{
TCHAR szTitle[512];
_bstr_t bstrText = szTitle;
*bstr = bstrText.copy();
}